Разрешить редактирование ASPxGridView только определенным пользователям

StackOverflow https://stackoverflow.com/questions/1400481

Вопрос

У меня есть ASPxGridView, который я хотел бы предоставить некоторым пользователям для чтения, а другим пользователям - для записи.В идеале это должно быть основано на группах Active Directory.
Как я могу это сделать?

Это было полезно?

Решение 2

В итоге я создал обработчик события для события DataBound и отключил столбец команд следующим образом:

protected void ASPxGridView1_DataBound(object sender, EventArgs e)
{ 
  if (!User.IsInRole(ConfigurationSettings.AppSettings["EditActiveDirectoryGroup"]))
  {
    foreach (GridViewColumn c in ASPxGridView1.Columns)
    {
      if (c.GetType() == typeof(GridViewCommandColumn))
      {
        c.Visible = false;
      }
    }
  }
}

Другие советы

Если вы используете редактирование строк на месте, тогда нужно будет скрыть элементы управления, которые позволят пользователю редактировать сетку.

Это можно сделать, подключившись к событию RowDataBound GridView с помощью обработчика событий и проверив роль пользователя. Если проверка не пройдена, скрыть элементы редактирования.

void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
  {
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
      if (!Roles.IsUserInRole("Admin"))
      {
        // Hide the edit controls.
        // This would be your "Edit" button or something.
        e.Row.Cells[1].Controls[0].Visible = false;  
      }
    }
  }

Если вы хотите включить EditButton условно только для определенных строк, есть пример CQ66919 на DevExpress.com.

Кроме того, они ссылаются на пример Е366 для более новых версий ASPxGridView.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top