ASP.NET - Problema con Gridview

 
Vista:

Problema con Gridview

Publicado por Bensaida (4 intervenciones) el 20/08/2009 08:24:46
Hola!! tengo una duda no conosco mucho de asp asi k agradeceria k me ayudaran.

Lo k pasa es k tengo un gridview kon 4 buttonfields y kiero k estos se me muestren de acuerdo a cada tipo de usuario k se loguea en el sistema, la validacion para los usuarios ya la tengo echa pero nose como manejar la visibilidad de cada boton de acuerdo al usuario logueado.

Se que la propiedad es la de Visible pero nose como plasmarla en el codigo. Algun ejemplo? Se los agradeceria mucho.

Espero sus respuestas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con Gridview

Publicado por Khristian (335 intervenciones) el 03/09/2009 04:00:22
Yo por ejemplo guardo en una variable de sesion el tipo de usuario.
Ejemplo:
1 = Avanzado
0 = Basico

Cuando el usuario se logea, obtengo de la BD el tipo de usuario para el usuario actual.

Session("IdTipoUsuario") = login.idTipoUsuario(idUsuario)

-----
Login, es ua clase que logea al usuario, y ademas implementa otras funcionalidades. Por ejemplo, recuperar el Id del Tipo de Usuario, pasando como parametro el Id del Usuario
---------

De esta manera logro asignar el tipo de usuario a la variable de sesion.

Ahora, cuando necesito evaluar algo por tipo de usuario, solo acceso a la variable de sesion.

msgbox("Tipo de Usuario: " & session("IdTipoUsuario")

Tambien podemos asignarlo a una variable.

dim tUsuario as integer = session("IdTipoUsuario")

select case tUsuario
........
........

Ahi es donde debes evaluar y hacer lo que necesites con el gridView.

Por ejemplo:

Si tUsuario = 1
GridView.Columns(0).Visible=True

Si tUsuario = 2
GridView.Columns(0).Visible=False

Con eso puedes ocultar columnas.
Puedes hacelo para filas... etc.

Si los botones estan en el encabezado o pie, debes usar el metodo findControl del GridView, a fin de que puedas acceder a sus propiedades.

Si lo que deseas manipular esta en las filas, puedes hacerlo pasando como parametro el valor 0 o 1 (false / true) en la sentencia SELECT, de manera que despues ese valor, que mandaste de entrada, lo uses en la salida, como valor para lapropiedad enabled del control.

Supongamos que muestras ID, Nº FACTURA, MONTO de la tabla faturas.

El Select es: SELECT Num, Factura, Monto FROM Factura

Pero deseas que el boton ELIMINAR de cada fila este bloqueado para usuarios basicos (0) y habilitado para usuarios avanzados (1), haces lo sgte.

SELECT Num, Factura, Monto, @Eliminar as Eliminar FROM Factura

Hemos agregado un parametro de entrada, el valor de dicho parametro lo configuras como:
Tipo: Session (Variable)
Valor: IdTipoUsuario

Como el tipo de usuario solo puede ser Avanzado=1 o Basico=0, el valor solo podra ser Verdadero o Falso.

Despues en tu grid view, conviertes en plantilla la columna que tendra el boton eliminar, y en databind (no me acuerdo bien, pero es donde se le asigna el valor a las propiedades del control), le asignas a la propiedad Enabled del boton, en valor que obtendras de la consulta; esto es, el campo Eliminar.
Dicho campo eliminar, lo unico que hace es asignar el valor del idTipoUsuario a cada fila de las consulta.

Otra manera es ir evaluando por cada fila que se va creando, pero creo que es mas perjudicial en cuando a rendimiento.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con Gridview

Publicado por Bensaida (4 intervenciones) el 04/09/2009 04:00:14
Muchas gracias Khristian excelentes consejos me sirvieron mucho un abrazo :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar