我在 Asp 中有一个用户控件,它有一个 GridView,'AutoGenerateColumns="False"。我必须根据 UC 的属性隐藏或显示一列。我怎样才能做到这一点?
这就是我的想法:
<asp:TemplateField HeaderText="<%=SelezionaColumnName %>" HeaderStyle-Width="80px">
请注意,此处的 headerText 未设置为公共 const 字符串 SelezionaColumnName 但它完全按原样呈现(在字符串中),而不是值,而是带有<%= %>
. 不知道为什么,是因为绑定吗?
后面的代码:
public const string SelezionaColumnName = "Seleziona";
public bool ShowSeleziona
{
set
{
grdMaterialiArt.Columns[GetColumnIndexByName(grdMaterialiArt, SelezionaColumnName)].Visible = value;
}
}
protected int GetColumnIndexByName(GridView grid, string name)
{
foreach (DataControlField col in grid.Columns)
{
if (col.HeaderText.ToLower().Trim() == name.ToLower().Trim())
{
return grid.Columns.IndexOf(col);
}
}
return -1;
}
注意:我必须注意使用 0 索引。可以在我的列之前添加列,因此我必须唯一标识该列。我继续按名称识别方法,因为 TemplateField 不能有 ID:| 希望我描述的场景足够好,我也搜索了很多,但没有找到类似的东西。