Скрыть ячейку (значение) gridview на основе другого значения ячейки

У меня есть Gridview с ItemTemplate, использующим несколько меток и 3 кнопки (деактивировать, удалить и изменить), как показано на рисунке ниже:

введите здесь описание изображения

Я хочу скрыть эти кнопки от некоторых пользователей на основе их имени пользователя (Label UserName в Gridview), например:

  • If UserName == "some string" затем скройте кнопки Деактивировать, Удалить и Изменить.

Как это сделать в коде события RowDataBound?


person Ronaldinho Learn Coding    schedule 18.09.2015    source источник


Ответы (2)


Да, используя событие Gridview RowDataBound, вы можете сделать это

protected void grd1_RowDataBound(object sender, GridViewRowEventArgs e)
{
   if (e.Row.RowType == DataControlRowType.DataRow)
   {
        Label lbl=e.Row.FindControl("your cotrol Id")as Label;
       if(lbl!=null && lbl.Text.Trim()=="some string")
       {
           e.Row.FindControl("deactivate btn Id").Visible = false;
           e.Row.FindControl("delete btn Id").Visible = false;
           e.Row.FindControl("edit btn Id").Visible = false;
       }
   }
 }
person Rajesh    schedule 18.09.2015

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

if(e.Row.RowType == DataControlRowType.DataRow)
{
  if(e.Row.Cells[2].Text = "some string")
  {
    Button delete = (Button)e.Row.FindControl("control id to hide");
    delete.Visisble = false;
  }
}
person Rami    schedule 18.09.2015