Hom*_*mam 37 .net asp.net data-binding gridview exception-handling
如何在GridView中隐藏TemplateField列?
我尝试了以下方法:
<asp:TemplateField ShowHeader="False" Visible='<%# MyBoolProperty %>' >
<ItemTemplate>
<asp:LinkButton ID="attachmentButton" runat="server" ... />
</ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
但它不起作用,并给出以下错误:
仅在具有DataBinding事件的对象上支持数据绑定表达式.System.Web.UI.WebControls.TemplateField没有DataBinding事件.
我也尝试以编程方式隐藏它,但似乎不可能通过名称获取列,因为没有TemplateField列的名称.
nav*_*een 55
protected void OnRowCreated(object sender, GridViewRowEventArgs e)
{
e.Row.Cells[columnIndex].Visible = false;
}
Run Code Online (Sandbox Code Playgroud)
HeaderTextfor GridViewColumn,然后使用它找到列HeaderText.
protected void UsersGrid_RowCreated(object sender, GridViewRowEventArgs e)
{
((DataControlField)UsersGrid.Columns
.Cast<DataControlField>()
.Where(fld => fld.HeaderText == "Email")
.SingleOrDefault()).Visible = false;
}
Run Code Online (Sandbox Code Playgroud)
For Each dcfColumn As DataControlField In gvGridview.Columns
If dcfColumn.HeaderText = "ColumnHeaderText" Then
dcfColumn.Visible = false
End If
Next
Run Code Online (Sandbox Code Playgroud)
如果我觉得Visible设置为false的行将无法访问,那么它们将从DOM中删除而不是隐藏,因此我还使用了Display:None方法.就我而言,我希望有一个包含Row键的隐藏列.对我来说,这种声明性方法比使用代码的其他一些方法更清晰.
<style>
.HiddenCol{display:none;}
</style>
<%--ROW ID--%>
<asp:TemplateField HeaderText="Row ID">
<HeaderStyle CssClass="HiddenCol" />
<ItemTemplate>
<asp:Label ID="lblROW_ID" runat="server" Text='<%# Bind("ROW_ID") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Right" CssClass="HiddenCol" />
<EditItemTemplate>
<asp:TextBox ID="txtROW_ID" runat="server" Text='<%# Bind("ROW_ID") %>'></asp:TextBox>
</EditItemTemplate>
<FooterStyle CssClass="HiddenCol" />
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
105028 次 |
| 最近记录: |