Pregunta

Tengo un System.Data.DataTable la que estoy unión a un GridView. Si el usuario no tiene una cierta función de seguridad, que desea reemplazar los datos en ciertas columnas con una "X". ¿Puedo hacer esto sin bucle a través de todas las filas?

¿Fue útil?

Solución

También podría hacerlo en la parte final. Pasar el ID de usuario o rol a un SP que devuelve sólo las columnas visibles y valores 'X' para las columnas que no pueden ver, y la interfaz de usuario se unen a eso.

Otros consejos

Implementar evento RowDataBound del GridView y hacer el cambio de allí si el papel de seguridad del usuario es insuficiente.

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

    }
  }

En sentido estricto, no. Puede utilizar los métodos de extensión de estilo de LINQ para ocultar la aplicación, pero cualquier código en un lenguaje de procedimientos va a implicar un bucle iterativo a través de las filas. Incluso el evento RowDataBound se dispara de forma iterativa por cada fila; sin embargo, es la iteración a través de las filas de todos modos, así que al menos usted no está duplicando el comportamiento de bucle.

Simplemente podría tener una segunda columna disponible y listo el nombre de "su columna2" lleno de datos x, a continuación, determinar qué columna es visible según el nivel de acceso de administrador.

En VB.NET no se puede cambiar los valores de cada fila sin recursividad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top