繁体   English   中英

如何在ASP.net的gridview控件中禁用/隐藏编辑按钮

[英]How can I disable/hide edit button in gridview control of ASP.net

我有一个gridview控件,其中有两个命令按钮(linkBut​​ton),一个是“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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM