C# 从codebehind在templatefield中绑定标签

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(

我在aspx文件中设置了一个gridview,在itemtemplate标记中有一个标签:

 <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>