簡體   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