2010-12-02 2 views
2

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

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

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

ответ

2

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

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

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

+1

Я сделал что-то вроде этого. Тем не менее, у меня есть столбец в нескольких таблицах (а столбцы разные в каждой таблице), поэтому столбец не будет иметь одинаковый индекс в каждой таблице. Было бы очень приятно, если бы я мог ссылаться на столбец так или иначе, не используя этот индекс. – 2010-12-03 15:08:00

0

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

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

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

Смежные вопросы