2016-01-18 65 views
0

我想隱藏刪除客戶角色的編​​輯按鈕,但管理員可以看到它們。我的Gridview已經設置了autogenarated column = true。如何隱藏自動刪除和編輯按鈕在用戶的asp.net gridview中?

這裏是我做過什麼:

<asp:GridView ID="grdview" OnRowCreated="grdview_RowCreated" OnRowDataBound="grdview_RowDataBound" CssClass="table table-hover table-responsive" runat="server" AutoGenerateColumns="False" DataKeyNames="id" DataSourceID="EntityDataSource1"> 
    <Columns> 
     <asp:BoundField DataField="id" HeaderText="id" ReadOnly="True" SortExpression="id" Visible="False" /> 
     <asp:BoundField DataField="InvoiceNo" HeaderText="InvoiceNo" SortExpression="InvoiceNo" NullDisplayText="Null" > 
      <ControlStyle CssClass="form-control" /> 
     </asp:BoundField> 
     <asp:TemplateField HeaderText="InvoiceDate" SortExpression="InvoiceDate"> 
      <EditItemTemplate > 
       <div class=" input-group"> 
        <asp:TextBox ID="txtdate2" runat="server" CssClass="form-control" Text='<%# Bind("InvoiceDate") %>'></asp:TextBox> 
        <span class="input-group-addon">   
         <a class=" glyphicon glyphicon-calendar" id="cal2"></a> 
         <asp:CalendarExtender ID="CalendarExtender2" PopupButtonID="cal2" Format="dd/MM/yyyy" TargetControlID="txtdate2" runat="server"></asp:CalendarExtender> 
        </span> 
       </div> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label1" runat="server" Text='<%# Bind("InvoiceDate") %>'></asp:Label> 
       </ItemTemplate> 
       <HeaderStyle Width="200px" /> 
       <ItemStyle Width="200px" /> 
      </asp:TemplateField> 
      <asp:BoundField DataField="Amount" HeaderText="Amount" SortExpression="Amount" > 
       <ControlStyle CssClass="form-control" /> 
      </asp:BoundField> 
      <asp:BoundField DataField="Items" HeaderText="Items" SortExpression="Items" > 
       <ControlStyle CssClass="form-control" /> 
      </asp:BoundField> 
      <asp:BoundField DataField="category" HeaderText="Category" SortExpression="category" Visible="False" > 
       <ControlStyle CssClass="form-control" /> 
      </asp:BoundField> 
      <asp:BoundField DataField="description" HeaderText="Description" SortExpression="description" Visible="False" /> 
      <asp:BoundField DataField="qty" HeaderText="Qty" SortExpression="qty" > 
       <ControlStyle CssClass="form-control" /> 
      </asp:BoundField> 
      <asp:BoundField DataField="remarks" HeaderText="Remarks" SortExpression="remarks" > 
       <ControlStyle CssClass="form-control" /> 
      </asp:BoundField> 
      <asp:BoundField DataField="PartyId" HeaderText="PartyId" SortExpression="PartyId" Visible="False" /> 
      <asp:TemplateField HeaderText="Action" ShowHeader="False" SortExpression="id"> 
       <EditItemTemplate> 
        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Update" Text="Update"></asp:LinkButton> 
        &nbsp;<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel"></asp:LinkButton> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit"></asp:LinkButton> 
        &nbsp;<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Delete" Text="Delete"></asp:LinkButton> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
</asp:GridView> 

這是必然事件行的數據,我想執行的顯示和隱藏列

protected void grdview_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) { 
     if (!admin()) 
      e.Row.Cells[5].Visible = false; 
    } 
    else if (e.Row.RowType == DataControlRowType.Header) { 
     if(!admin()) 
      e.Row.Cells[6].Visible = false; 
    } 
} 
+0

如果你想隱藏列爲什麼需要檢查rowtype? –

回答

0

您還可以使用GridView的預渲染的事件如下。

protected void grdview_RowDataBound(object sender, EventArgs e) 
    { 
     if(!admin()) 
     { 
      grdview.Columns[5].Visible = true; 
     } 
     else 
     { 
      //do something 
     }    
    } 
+0

不能工作 protected void grdview_PreRender(object sender,EventArgs e) grdview.Columns [0] .Visible = false; } – Akash

相關問題