C# 从codebehind在templatefield中绑定标签
我在aspx文件中设置了一个gridview,在itemtemplate标记中有一个标签:C# 从codebehind在templatefield中绑定标签,c#,asp.net,C#,Asp.net,我在aspx文件中设置了一个gridview,在itemtemplate标记中有一个标签: <asp:TemplateField HeaderText="Field" SortExpression="Field"> <ItemTemplate> <asp:Label Font-Size="12px" ID="lblField" runat="server" Text='<%# Bind(
<asp:TemplateField HeaderText="Field" SortExpression="Field">
<ItemTemplate>
<asp:Label Font-Size="12px" ID="lblField" runat="server" Text='<%# Bind("DataTableField","{0:N0}") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<div style="text-align: right;">
<asp:Label Font-Size="12px" ID="FieldTotal" runat="server" Font-Bold="true" />
</div>
</FooterTemplate>
</asp:TemplateField>
我没有做到的是创建bindFromCS方法,这样它就可以替换aspx文件中的bind方法。有很多方法可以使它成为动态的 一种方法是,必须使用gridview的RowDataBound事件手动为控件赋值。在AgentSum_RowDataBound函数中,可以执行以下操作来动态为标签赋值
protected void AgentSum_RowDataBound(object sender, GridViewRowEventArgs e)
{
var dataItem = e.Row.DataItem as DataRow; //change this to your domain object type
foreach (Control RowControl in e.Row.Controls)
{
if (RowControl as Label != null) (RowControl as Label).Text = dataItem[(RowControl as Label).Text].ToString();
}
}
第二种方法是可以在代码隐藏中创建函数
受保护字符串GetSumDateValueDateTime sumDate
{
return sumDate.ToString;//在此处更改逻辑
}
并在您的aspx中调用此函数,如下所示
Text='<%# GetSumDateValue(Eval("SumDate")) %>'>
将格式化日期绑定到标签
<asp:Label Font-Size="12px" ID="lblSumDate" runat="server" Text='<%# Bind("FormattedDate") %>'></asp:Label>
您可以使用适合您的任何方法我使用的是第一种方法,还有另一个问题:如果dataitemtype是DataTable中的DataRow,那么如何动态获取相关列?我指的是代码行,在这里我动态地分配任何值,您绑定到gridview的是哪种类型的列表?我的意思是数据源项的类型是什么?您可以将e.Row.DataItem强制转换为此类型。然后,您可以访问数据源为DataTable的任何列。我找不到引用DataRow中相关列的正确语法?如果绑定DataTable,请尝试将DataRow DataRow=e.Row.DataItem转换为DataRow;然后可以使用dataRow[SumDate]访问该列。
public string FormattedDate
{
get
{
return SumDate.ToString(); // Change your logic here
}
}
<asp:Label Font-Size="12px" ID="lblSumDate" runat="server" Text='<%# Bind("FormattedDate") %>'></asp:Label>