Aspに、GridView'AutoGenerateColumns="False"を持つユーザーコントロールがあります。UCのプロパティに従って列を非表示または表示する必要があります。どうやってやるの?
これは私がやろうと思った方法です:
<asp:TemplateField HeaderText="<%=SelezionaColumnName %>" HeaderStyle-Width="80px">
ここで、headerTextはpublic const string SelezionaColumnNameに設定されていませんが、値ではなく名前に。を付けて、そのまま(stringで)レンダリングされることに注意してください<%= %>
。理由はわかりませんが、これは拘束力のせいですか?
背後にあるコード:
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を持つことができないため、名前による識別アプローチを続けました:| シナリオを十分に説明したことを願っています。私もよく検索しましたが、似たようなものは見つかりませんでした。