在GridView中显示基于角色的编辑按钮

时间:2011-02-26 16:14:55

标签: c# .net asp.net gridview asp.net-membership

我有一个网格视图。我添加了AutoGenerateEditButton=True

我想向属于某个角色的用户显示该按钮。如果不是,则不呈现按钮。

你推荐什么?为实现这一目的,我必须处理哪个事件?

我是否必须使用模板驱动的控件,例如ListView?

解决方案

<Columns>
    <asp:CommandField 
         ShowEditButton="True" />
    <asp:BoundField 
         DataField="Id" 
         ReadOnly="true"  
         Visible="true" />         
    <asp:BoundField 
         DataField="Title" 
         HeaderText="Title"  />         
</Columns> 

GridView的Load事件:

if(!User.IsInRole("Manager"))
{
    for (int i = 0; i < grdMovies.Columns.Count; i++)
    {
        if (grdMovies.Columns[i] is CommandField)
        {
            grdMovies.Columns[i].Visible = false;
        }
    }
}

2 个答案:

答案 0 :(得分:3)

ButtonFieldCommandName = Edit一起使用。 您可以根据用户的角色隐藏Page_Load函数中的列:

const int _editColumnIndex = 0;

void Page_Load(object sender, EventArgs e)
{
  if(!User.IsInRole("Manager"))    
      grdMovies.Columns[_editColumnIndex].Visible = false;
}

答案 1 :(得分:0)

无论如何要考虑这个更正确的代码:

foreach (CommandField column in grdMovies.Columns.OfType<CommandField>)
{
    column.Visible = false;
}