GridView 模板列中的数据绑定
2011-01-05 11:38
399 查看
方法一:直接绑定查询的数据
<asp:GridViewID="GridView1"runat="server"OnRowDataBound="GridView1_RowDataBound1"
CellPadding="4"ForeColor="#333333"GridLines="Horizontal"AllowPaging="True"
PageSize="9"Width="100%">
<FooterStyleBackColor="#DBE7F6"ForeColor="black"/>
<Columns>
<asp:BoundFieldHeaderText=""FooterStyle-Width="20px"></asp:BoundField>
<asp:TemplateFieldHeaderText="我要留言"HeaderStyle-Font-Size="16">
<ItemTemplate>
<tablewidth="100%">
<tr>
<tdstyle="text-align:center;">
<asp:LabelID="libTitle"runat="server"Style="position:relative"Text='<%#eval_r("Title")%>'></asp:Label>
</td>
</tr>
<tr>
<tdstyle="text-align:left;">
<asp:LabelID="libContent"runat="server"Style="position:relative"Text='<%#eval_r("Content")%>'></asp:Label>
</td>
</tr>
<tr>
<tdstyle="text-align:right;">
<asp:LabelID="libAuthor"runat="server"Style="position:relative"Text='<%#eval_r("ToName")%>'></asp:Label>
<asp:LabelID="libCreated"runat="server"Style="position:relative"Text='<%#eval_r("Created")%>'></asp:Label>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<RowStyleBackColor="#EFF3FB"/>
<SelectedRowStyleBackColor="#D1DDF1"Font-Bold="True"ForeColor="#333333"/>
<PagerStyleBackColor="#2461BF"ForeColor="White"HorizontalAlign="Center"/>
<HeaderStyleBackColor="#00A0DB"Font-Bold="True"ForeColor="White"/>
<EditRowStyleBackColor="#2461BF"/>
<AlternatingRowStyleBackColor="White"/>
<PagerSettingsVisible="False"/>
</asp:GridView>
publicvoidGridView1Show()
{
SPListlist=null;
try
{
list=SPContext.Current.Web.Lists["Messageboard"];
}
catch(Exceptionerr)
{
//Labellable=this.GridView1.FooterRow.FindControl("libMessage")asLabel;
libMessage.Text="当前网站中没有留言板列表,请联系管理员创建.出错详细信息:"+err.Message;
}
SPQueryquery=newSPQuery();
query.Query=@"<Where><Eq><FieldRefName='Author'/><ValueType=\'Text\'>"+getme()+"</Value></Eq></Where><OrderBy><FieldRefName='Created'Ascending='FALSE'></FieldRef></OrderBy>";
try
{
SPListItemCollectionitems=list.GetItems(query);
if(items.Count<1)
{
//Labellable=this.GridView1.FooterRow.FindControl("libMessage")asLabel;
libMessage.Text="您没有给别人留言;或者您给别人的留言别人已读并且删除!";
btnFirst.Visible=false;//隐藏分页按钮
btnPrev.Visible=false;
btnNext.Visible=false;
btnLast.Visible=false;
}
else
{
GridView1.DataSource=CreateDataTable();
GridView1.DataBind();
}
}
catch(Exceptionerr)
{
//Labellable=this.GridView1.FooterRow.FindControl("libMessage")asLabel;
libMessage.Text="出现错误,请联系管理员.原因"+err.Message;
}
}
或
<%#
DataBinder.eval_r(Container.DataItem,"数据库字段")%>
<%#
DataBinder.eval_r(Container.DataItem,"ColumnName")%>
<%#
DataBinder.eval_r(Container.DataItem,"ColumnName",null)%>
<%#
DataBinder.eval_r(Container,"DataItem.ColumnName",null)%>
其他用法
<%#
((DataRowView)Container.DataItem)["ColumnName"]%>
<%#
((DataRowView)Container.DataItem).Row["ColumnName"]%>
<%#
((DataRowView)Container.DataItem)["adtitle"]%>
<%#
((DataRowView)Container.DataItem)
%>
<%#
((DbDataRecord)Container.DataItem)[0]%>
<%#
(((自定义类型)Container.DataItem)).属性.ToString()
%>//如果属性为字符串类型就不用ToString()了
说明:FirstName
,LastName皆为数据库字段。这里直接绑定没有对结果做任何格式处理和运算。同时你也可以看到,可以直接在模板里布置多个绑定。
方法二:对运算结果进行运算
<asp:TemplateField
HeaderText="打折">
<ItemTemplate>
<%#DataBinder.eval_r(Container.DataItem,
"Discount").ToString()=="0"?"不打":DataBinder.eval_r(Container.DataItem,
"Discount").ToString()%>折
</ItemTemplate>
</asp:TemplateField>
说明:运用三元运算符,对结果进行判断。这种方法适合那些非True即False的情况。
方法三:对结果进行格式化处理
<%#DataBinder.eval_r(Container.DataItem,
"Discount_beginDate","{0:yyyy-m-d}").ToString()==
"1900-0-1"?"无":DataBinder.eval_r(Container.DataItem,"Discount_beginDate",
"{0:yyyy-m-d}").ToString()%>
说明:可以看到这里查询日期进行了格式化,然后进行了运算。
方法四:绑定后台方法
代码
CellPadding="4"ForeColor="#333333"GridLines="Horizontal"AllowPaging="True"
PageSize="9"Width="100%">
<FooterStyleBackColor="#DBE7F6"ForeColor="black"/>
<Columns>
<asp:BoundFieldHeaderText=""FooterStyle-Width="20px"></asp:BoundField>
<asp:TemplateFieldHeaderText="我要留言"HeaderStyle-Font-Size="16">
<ItemTemplate>
<tablewidth="100%">
<tr>
<tdstyle="text-align:center;">
<asp:LabelID="libTitle"runat="server"Style="position:relative"Text='<%#eval_r("Title")%>'></asp:Label>
</td>
</tr>
<tr>
<tdstyle="text-align:left;">
<asp:LabelID="libContent"runat="server"Style="position:relative"Text='<%#eval_r("Content")%>'></asp:Label>
</td>
</tr>
<tr>
<tdstyle="text-align:right;">
<asp:LabelID="libAuthor"runat="server"Style="position:relative"Text='<%#eval_r("ToName")%>'></asp:Label>
<asp:LabelID="libCreated"runat="server"Style="position:relative"Text='<%#eval_r("Created")%>'></asp:Label>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<RowStyleBackColor="#EFF3FB"/>
<SelectedRowStyleBackColor="#D1DDF1"Font-Bold="True"ForeColor="#333333"/>
<PagerStyleBackColor="#2461BF"ForeColor="White"HorizontalAlign="Center"/>
<HeaderStyleBackColor="#00A0DB"Font-Bold="True"ForeColor="White"/>
<EditRowStyleBackColor="#2461BF"/>
<AlternatingRowStyleBackColor="White"/>
<PagerSettingsVisible="False"/>
</asp:GridView>
publicvoidGridView1Show()
{
SPListlist=null;
try
{
list=SPContext.Current.Web.Lists["Messageboard"];
}
catch(Exceptionerr)
{
//Labellable=this.GridView1.FooterRow.FindControl("libMessage")asLabel;
libMessage.Text="当前网站中没有留言板列表,请联系管理员创建.出错详细信息:"+err.Message;
}
SPQueryquery=newSPQuery();
query.Query=@"<Where><Eq><FieldRefName='Author'/><ValueType=\'Text\'>"+getme()+"</Value></Eq></Where><OrderBy><FieldRefName='Created'Ascending='FALSE'></FieldRef></OrderBy>";
try
{
SPListItemCollectionitems=list.GetItems(query);
if(items.Count<1)
{
//Labellable=this.GridView1.FooterRow.FindControl("libMessage")asLabel;
libMessage.Text="您没有给别人留言;或者您给别人的留言别人已读并且删除!";
btnFirst.Visible=false;//隐藏分页按钮
btnPrev.Visible=false;
btnNext.Visible=false;
btnLast.Visible=false;
}
else
{
GridView1.DataSource=CreateDataTable();
GridView1.DataBind();
}
}
catch(Exceptionerr)
{
//Labellable=this.GridView1.FooterRow.FindControl("libMessage")asLabel;
libMessage.Text="出现错误,请联系管理员.原因"+err.Message;
}
}
或
<%#
DataBinder.eval_r(Container.DataItem,"数据库字段")%>
<%#
DataBinder.eval_r(Container.DataItem,"ColumnName")%>
<%#
DataBinder.eval_r(Container.DataItem,"ColumnName",null)%>
<%#
DataBinder.eval_r(Container,"DataItem.ColumnName",null)%>
其他用法
<%#
((DataRowView)Container.DataItem)["ColumnName"]%>
<%#
((DataRowView)Container.DataItem).Row["ColumnName"]%>
<%#
((DataRowView)Container.DataItem)["adtitle"]%>
<%#
((DataRowView)Container.DataItem)
%>
<%#
((DbDataRecord)Container.DataItem)[0]%>
<%#
(((自定义类型)Container.DataItem)).属性.ToString()
%>//如果属性为字符串类型就不用ToString()了
说明:FirstName
,LastName皆为数据库字段。这里直接绑定没有对结果做任何格式处理和运算。同时你也可以看到,可以直接在模板里布置多个绑定。
方法二:对运算结果进行运算
<asp:TemplateField
HeaderText="打折">
<ItemTemplate>
<%#DataBinder.eval_r(Container.DataItem,
"Discount").ToString()=="0"?"不打":DataBinder.eval_r(Container.DataItem,
"Discount").ToString()%>折
</ItemTemplate>
</asp:TemplateField>
说明:运用三元运算符,对结果进行判断。这种方法适合那些非True即False的情况。
方法三:对结果进行格式化处理
<%#DataBinder.eval_r(Container.DataItem,
"Discount_beginDate","{0:yyyy-m-d}").ToString()==
"1900-0-1"?"无":DataBinder.eval_r(Container.DataItem,"Discount_beginDate",
"{0:yyyy-m-d}").ToString()%>
说明:可以看到这里查询日期进行了格式化,然后进行了运算。
方法四:绑定后台方法
代码
<asp:TemplateFieldHeaderText="流行程度">
<ItemTemplate>
ItemTemplate>
asp:TemplateField>
//后台方法:
protectedstringGetStatusPicture(objectdataItem)
{
intunits=Int32.Parse(DataBinder.eval_r(dataItem,"PopularLevel").ToString());
stringstrNum="";
switch(units)
{
case0:
strNum="0颗星";
break;
case1:
strNum="1颗星";
break;
case2:
strNum="2颗星";
break;
case3:
strNum="3颗星";
break;
case4:
strNum="4颗星";
break;
case5:
strNum="5颗星";
break;
}
returnstrNum;
}
//说明:后台方法必须为Public或Proteced,接受的参数最好为Object类型,然后再方法内进行转换。
相关文章推荐
- 如何使用动态创建模板列并绑定数据(GridView,Repeater,DataGrid)
- 动态创建模板列并绑定数据(GridView,Repeater,DataGrid)
- 转:GridView 模板列中的数据绑定
- ASP.NET2.0中给GridView动态添加模板列并自动绑定数据
- win8开发之数据绑定控件Gridview以分组及不同项模板的形式呈现数据
- 转:GridView 模板列中的数据绑定
- GridView 模板列中用函数绑定数据
- 如何使用动态创建模板列并绑定数据(GridView,Repeater,DataGrid)
- 如何使用动态创建模板列并绑定数据(GridView,Repeater,DataGrid)
- GridView等表格模板列绑定数据的方法
- GridView 模板列中的数据绑定
- ASP.NET2.0中给GridView动态添加模板列并自动绑定数据
- 动态创建模板列并绑定数据(GridView,Repeater,DataGrid)
- ASP.NET 2.0的 GridView中模板列绑定DropDownList的数据处理
- GridView动态添加模板列(并为其添加事件和自动绑定数据)
- 动态创建模板列并绑定数据(GridView,Repeater,DataGrid)
- GridView动态添加模板列(数据绑定)
- GridView动态添加模板列并自动绑定数据
- 在数据绑定控件GridView等模板中使用标准控件image
- GridView 动态添加模板列并绑定数据 实现从外部直接传入控件 和 绑定字段参数