Изменить значение каждой ячейки в столбце DataTable - PullRequest
1 голос
/ 17 сентября 2010

У меня есть System.Data.DataTable, который я привязываю к GridView. Если у пользователя нет определенной роли безопасности, я хочу заменить данные в определенных столбцах знаком «X». Могу ли я сделать это без зацикливания всех строк?

Ответы [ 4 ]

2 голосов
/ 17 сентября 2010

Строго говоря, нет.Вы можете использовать методы расширения в стиле Linq, чтобы скрыть реализацию, но любой код на процедурном языке будет включать итеративный цикл по строкам.Даже событие RowDataBound запускается итерацией для каждой строки;однако, в любом случае, он выполняет итерацию по строкам, так что, по крайней мере, вы не дублируете циклическое поведение.

2 голосов
/ 17 сентября 2010

Реализуйте событие RowDataBound GridView и внесите в него изменения, если роль безопасности пользователя неадекватна.

  void CusomGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
  {
    if(User.Role != "Admin")
    {
      e.Row.Cells[1].Text = "X";

    }
  }
1 голос
/ 17 сентября 2010

Вы также можете сделать это на заднем плане.Передайте идентификатор пользователя или роль в sp, который возвращает только видимые столбцы и значения 'X' для столбцов, которые они не могут видеть, и привязывает к этому пользовательский интерфейс.

1 голос
/ 17 сентября 2010

Вы могли бы просто иметь второй доступный столбец и назвать его «your column2», заполненный x данными, а затем определить, какой столбец видим, основываясь на уровне доступа администратора.

В VB.NET вы не можете изменять значения каждой строки без рекурсии.

...