C# 如何在网格视图中隐藏带有行标题的图像按钮
我试图根据用户角色类型在网格中隐藏一列 这是我的c代码 这是html页面C# 如何在网格视图中隐藏带有行标题的图像按钮,c#,asp.net,C#,Asp.net,我试图根据用户角色类型在网格中隐藏一列 这是我的c代码 这是html页面 <asp:TemplateField HeaderText="Delete" HeaderStyle-CssClass="grid_header_text"> <ItemTemplate> <asp:ImageButton ID="imgDelete" runat="server" Comma
<asp:TemplateField HeaderText="Delete" HeaderStyle-CssClass="grid_header_text">
<ItemTemplate>
<asp:ImageButton ID="imgDelete" runat="server" CommandName="DEL" ImageUrl="~/Image/delete.gif"
OnClientClick="if(confirm('Budget List Summary \n\n Selected record will be deleted please confirm')==false){event.returnValue=false;return false;}else{return true;}" TabIndex="18" ToolTip="Delete" />
</ItemTemplate>
<HeaderStyle CssClass="grid_header_text"></HeaderStyle>
</asp:TemplateField>
根据您记录的错误消息,我假设您有一个GridView。如果是这样的话,像这样的事情难道不能奏效吗
gvBudget.Columns[0]。可见=false 好的,问题是如果我们只是隐藏控件,列仍然呈现。这里的关键是,实际上你的列控件被隐藏了
假设我们有:
我隐藏链接按钮的代码是这样的:
Dim lb As LinkButton = gv.FindControl("btnLNK")
lb.Visible = False
然后我们得到:
因此,它确实会将控件“隐藏在”列中,但不会隐藏整个列
所以,你必须隐藏单元格,像这样说:
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.Cells(4).Visible = False
End If
If e.Row.RowType = DataControlRowType.DataRow Or
e.Row.RowType = DataControlRowType.Header Then
e.Row.Cells(4).Visible = False
End If
但请注意,他是如何只隐藏数据,而不隐藏标题的
因此,我们必须同时隐藏标题和数据,如下所示:
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.Cells(4).Visible = False
End If
If e.Row.RowType = DataControlRowType.DataRow Or
e.Row.RowType = DataControlRowType.Header Then
e.Row.Cells(4).Visible = False
End If
我们得到这个:
看起来不错。你确定user=1?是的,我检查了两次。嗯,好吧,也许试着用样式来隐藏。例如:imgBtn.Style(“显示”)=“无”;我使用了您提到的方法,通过从1开始计算gv列,删除为14,因此它应该类似于gvbudget.column[13]。visible=false;是的,但是我得到了一个例外,因为索引的数量比同样提到的数字还要多。看起来索引[13]太多了。您还可以(我认为)使用列名来获取列索引。例如:gvbudget.Columns[“columnName”]。可见