【发布时间】:2012-12-28 09:55:59
【问题描述】:
我在 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:| 希望我描述的场景足够好,我也搜索了很多,但没有找到类似的东西。
【问题讨论】: