如何在代码隐藏中访问TemplateField

时间:2012-04-18 22:51:52

标签: c# asp.net .net templatefield detailview

<asp:DetailsView...
    <asp:TemplateField HeaderText="My CheckBox" SortExpression="DataID" >
         <InsertItemTemplate>
                <asp:CheckBox ID="T01cbx" runat="server" Visible ="false" Checked='<%# Bind("DataID") %>' AutoPostBack="True" " />
         </InsertItemTemplate>
    </asp:TemplateField>

我想为上面的TemplateField提供一个ID或Name,并从后面的代码中访问它。无论如何通过给予和ID或名称找到TemplateField?这是在DetailView中。

2 个答案:

答案 0 :(得分:3)

您可以使用LINQ通过它TemplateField获取HeaderText

TemplateField cbField = DetailsView1.Fields.OfType<TemplateField>()
                       .Where(f => f.HeaderText == "My CheckBox")
                       .FirstOrDefault();

答案 1 :(得分:1)

我过去曾尝试这样做,但从来没有找到比编写循环所有列的函数更好的方法,并通过它的SortExpression找到我想要修改的那个。

这是我用来通过SortExpression隐藏/显示列的函数:

public void ShowHideGridColumnBySortExpression(string sortExpression, bool show)
{
    for (int i = 0; i < gvProducts.Columns.Count; i++)
    {
        if (gvProducts.Columns[i].SortExpression != null && gvProducts.Columns[i].SortExpression == sortExpression)
        {
            gvProducts.Columns[i].Visible = show;
            break;
        }
    }
}