我正在使用gridview来绑定我的数据。我想隐藏相应于标题字段的后端列
<asp:TemplateField>
<HeaderTemplate>
Incident Number
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lb_incidentnumber" runat="server" Text='<%# Eval("IncidentNumber")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
我可以简单地写为gv_viewincident.Columns[3].Visible = false;
但我想通过提及headername而不是通过给出索引来隐藏列。
怎么做?
答案 0 :(得分:1)
这一个
for (int i = 0; i < gv_viewincident.Columns.Count; i++)
{
if (gv_viewincident.Columns[i].HeaderText == "Incident Number")
{
gv_viewincident.Columns[i].Visible = false;
}
}
答案 1 :(得分:1)
首先,让我们制作一个extension method,以便更轻松地访问该列。将此类放在名为GridViewExtensions.cs的文件的App_Code文件夹中。
public static class GridViewExtensions
{
public static DataControlField GetColumnByHeaderText(this DataControlFieldCollection dataControlFieldCollection , string headerText)
{
foreach(var column in DataControlFieldCollection)
{
if(column.HeaderText==headerText)
return column;
}
}
}
然后就是......
gv_viewincident.Columns.GetColumnByHeaderText("Incident Number").Visible=false;
当然,这假设您将标题文本添加到列中。
<asp:TemplateField HeaderText="Incident Number">
答案 2 :(得分:0)
这是一个应该有效的方法:
List<DataControlField> columns = grid.Columns.Cast<DataControlField>().ToList();
columns.Find(col => col.HeaderText == "Incident Number").Visible = false;