[英]How can I disable/hide edit button in gridview control of ASP.net
我有一个gridview控件,其中有两个命令按钮(linkButton),一个是“select”,另一个是“edit”,现在我有一个名为department的会话变量,它包含“WRITING”,“EDITING”等值,“管理员”等...现在问题是当部门是“写作”时我想要编辑按钮消失但是当它是“编辑”或“管理员”时我想要编辑按钮出现。
我正在搜索一些论坛来解决这个问题并找到了这个
row.Cells[0].Controls.Clear();
这段代码的问题在于它隐藏了整个命令列,包括“选择”和“编辑”按钮,而我只想控制“编辑”按钮,选择应该对所有部门保持可见。
如果我喜欢(在行数据绑定事件上)
e.row.Cells[0].Controls[1].visible = false OR
e.row.Cells[0].Controls[0].visible = false
指定的参数超出了有效值的范围。
我该怎么做呢?
谢谢。
您可以通过以下方式使用Visible属性。
if (Session(mode) == "WRITING") { (e.Row.FindControl("btnEdit")).Visible = false; }
首先 - 您的代码不起作用,因为索引0处的gridViewCell只包含一个控件。 每个CommandButton都有一个单元格! 此外,我不太清楚为什么要使用RowDataBound事件。 在使用Session-Var时,绑定行时可能不会更改。
我在pageLoad eventHandler中尝试了以下代码 - 这对我来说很有用:
/// just replace CAPITAL letters with your names and
/// (Session["department"] == "WRITING") with your boolean expression
gvYOURGV.Columns[INDEXOFSELECTCOLUMN].Visible = (Session["department"] == "WRITING");
如果您希望在修改命令列的外观时(需要具有?)更灵活 - 您甚至可以考虑将命令列更改为模板化列。 这样做你可能有这个代码:
<asp:GridView ID="gvYOURGV" runat="server">
<Columns>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1"
visible='<%# Session["department"] != "WRITING" %>'
runat="server" CausesValidation="False"
CommandName="Select" Text="Auswählen"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
心连心
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.