Asp.net

如何在 GridView 中隱藏 TemplateField 列

  • February 10, 2011

如何在 GridView 中隱藏 TemplateField 列?

我嘗試了以下方法:

<asp:TemplateField ShowHeader="False" Visible='<%# MyBoolProperty %>' >
<ItemTemplate>
   <asp:LinkButton ID="attachmentButton" runat="server" ... />
</ItemTemplate>

但它不起作用並給出以下錯誤:

只有具有 DataBinding 事件的對象才支持數據綁定表達式。System.Web.UI.WebControls.TemplateField 沒有 DataBinding 事件。

我也嘗試以程式方式隱藏它,但似乎無法通過名稱獲取列,因為TemplateField列沒有名稱。

protected void OnRowCreated(object sender, GridViewRowEventArgs e)
{
        e.Row.Cells[columnIndex].Visible = false;
}

如果您不喜歡硬編碼索引,我可以建議的唯一解決方法是為提供****a然後使用 that 查找列HeaderText``GridViewColumn``HeaderText

protected void UsersGrid_RowCreated(object sender, GridViewRowEventArgs e)
{
   ((DataControlField)UsersGrid.Columns
           .Cast<DataControlField>()
           .Where(fld => fld.HeaderText == "Email")
           .SingleOrDefault()).Visible = false;
}

引用自:https://stackoverflow.com/questions/4954871