Отображение кнопки «Редактировать» в GridView на основе роли - PullRequest
0 голосов
/ 26 февраля 2011

У меня есть вид сетки.Я добавил AutoGenerateEditButton=True.

Я хочу отобразить эту кнопку для пользователей, которые принадлежат к определенной роли.Если нет, кнопка не отображается.

Что вы рекомендуете?Какое событие мне нужно обработать для достижения этой цели?

Нужно ли работать с управлением на основе шаблонов, например ListView?

Решение :

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

И событие загрузки GridView:

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 ]

3 голосов
/ 26 февраля 2011

Используйте ButtonField с CommandName = Edit.Вы можете скрыть столбец в функции Page_Load в зависимости от роли пользователя:

const int _editColumnIndex = 0;

void Page_Load(object sender, EventArgs e)
{
  if(!User.IsInRole("Manager"))    
      grdMovies.Columns[_editColumnIndex].Visible = false;
}
0 голосов
/ 01 марта 2011

В любом случае примите во внимание этот более правильный код:

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