Как я могу отобразить столбец gridview только пользователям с определенной ролью? - PullRequest
2 голосов
/ 03 декабря 2010

У меня есть страница asp.net с сеткой.Я хотел бы сделать так, чтобы определенные столбцы в виде сетки отображались только в том случае, если пользователь играет определенную роль, то есть, если HttpContext.Current.User.IsInRole (XXX) возвращает true.

Что такоесамый простой способ сделать это?

Я бы предпочел решение, в котором я мог бы легко поместить это в мой код ASP, а не в код позади страницы.

Ответы [ 2 ]

2 голосов
/ 03 декабря 2010

Я использовал эту технику на одном из своих сайтов.

If Roles.IsUserInRole(Profile.UserName, "This Role") Then
    productGridview.Columns(2).Visible = False
End If

Конечно, в этом случае 2 представляет индекс столбца, который нужно скрыть.

0 голосов
/ 03 декабря 2010

Я могу придумать несколько вариантов здесь, хотя некоторые имеют хакерскую разновидность. Вы могли бы:

  1. Установите переменную JavaScript для результатов вашей функции HttpContext.Current.User.IsInRole(xxx), а затем удалите нарушающие элементы управления с помощью jQuery. Я сделал нечто подобное, используя селектор `$ (" control_type [id $ =] ").
  2. Используйте функцию FindControl("ID"), чтобы получить элементы управления, которые вы хотите скрыть из каждой из ваших сеток, и установите Visible = false для каждой из них.
  3. Создайте две отдельные страницы aspx GridView, одну со всеми столбцами и одну с ограниченным набором столбцов. Затем вы можете использовать тег <div> в качестве заполнителя и вызывать функцию load () jQuery (со ссылками на соответствующую страницу aspx) на основе результатов IsInRole ().

Если вы автоматически генерируете свои столбцы, возможно, вы могли бы просто передать результаты IsInRole () в конструктор / функцию класса, которые вы используете, и таким образом скрыть столбцы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...