从.Master页面中删除gridview编辑列

时间:2013-11-25 08:52:44

标签: c# asp.net session gridview

我正在开展一个企业项目。因此,有许多用户从数据输入操作员到更高的管理人员。用户帐户分别存储在用户数据表中,并且各自的权限存储在 userprivileges表中。

我的gridview支持交易中的多个表单,我提供了查看,修改,更新选项,如下所示。

<asp:GridView ID="grvId".....>
   <Columns>
     <asp:BoundField..... />
     .
     .
      <asp:TemplateField AccessibleHeaderText="Edit" HeaderText="Edit">
          <ItemTemplate>
              <asp:Button ID="btnEdit" runat="server" CausesValidation="false" 
                  CommandName="Edit" Text="Edit" />
          </ItemTemplate>
          <EditItemTemplate>
              <asp:Button ID="btnUpdate" runat="server" CausesValidation="true" 
                  CommandName="Update" Text="Update" />
              <asp:Button ID="btnCancel" runat="server" CausesValidation="false" 
                  CommandName="Cancel" Text="Cancel" />
          </EditItemTemplate>
      </asp:TemplateField>
      <asp:ButtonField ButtonType="Button" CommandName="Delete" HeaderText="Delete" Text="Delete" />
   </Columns>
</asp:GridView>

我想要做的是,基于会话(用户当前登录),我必须设置编辑 DELETE <的可见性/ strong> gridview中的功能。

更新:这可以在.Master页面中实现,并且可以从子页面进行调用吗?

2 个答案:

答案 0 :(得分:3)

在C#Code-Behind中,检查当前用户并检查Privileges。

确定后,您可以直接隐藏列:

if (!userEdit) {
    grvId.Columns[0].Visible = false;
}

其中0是编辑列的列号(记住集合从0开始),userEdit变量是关于用户是否可以编辑网格的布尔值设置。

答案 1 :(得分:0)

没有直接回答这个问题,但在这种情况下我会使用CommandField(http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.commandfield%28v=vs.110%29.aspx)而不是多个Button / Template列:

<asp:GridView ID="grvId" ...>
    <Columns>
        <asp:BoundField..... />
        <asp:CommandField ButtonType="Button" />
    </Columns>
</asp:GridView>

然后你可以像这样动态显示/隐藏按钮:

protected void Page_Load(object sender, EventArgs e)
{
    bool canEdit = isAdmin || isEditor;
    bool canDelete = isAdmin;

    // fetch the last column, which is the command field
    CommandField col = (CommandField)grvId.Columns[grvId.Columns.Count - 1];

    col.ShowEditButton = canEdit;
    col.ShowDeleteButton = canDelete;
}

当然,您需要使用实际的权限检查替换isAdmin,isEditor等。