miércoles, 17 de octubre de 2007

Establecer color dependiendo de una condición en un GridView

Habitualmente mostramos los datos en un gridview más o menos "tuneados" que dirían, usando las propiedades de dicho control.

Hasta aquí todo bien. El problema, cuando en función a un determinado valor se debía cambiar cierta propiedad.

En el caso que me ocupaba, si obtenía del registro de la tabla o vista que mostraba en el gridview, una E, debía escribir una E y establecer la propiedad BackColor de tal modo que fuese Amarillo. Y si obtenía una P, pues escribiría el valor P y el color Rojo.

Para ello:

/1/ "Editar Columnas" de las opciones de la etiqueta inteligente del GridView.
/2/ Seleccionar el campo sobre el que deseamos proceder y convertirlo en template, para ello nos posicionamos y "Convertir este informe en TemplateField". Y Aceptar.
/3/ "Editar Plantillas" de las opciones de la etiqueta inteligente del GridView. Debemos estar en la plantilla ItemTemplate.
/4/ Seleccionar el Label de la plantilla, y "Editar DataBinding ..." de las opciones de la etiqueta inteligente del Labek.
/5/ En la propiedad Text, establecer "Con enlace a" y seleccionamos nuestro campo, es este caso el mío era Estado.
/6/ Activamos "Mostrar todas las propiedades"
/7/ Nos desplazamos a la propiedad BackColor.
/8/ Activamos "Personalizar enlace", y escribimos:

IIf(Eval("Estado")="E",System.Drawing.Color.Yellow,
    System.Drawing.Color.Red)


O dicho de otro modo, si el valor del campo de Estado es E entonces, fondo amarillo y si no fondo rojo.

También se puede establecer el color en modo hexadecimal, debiendo sustituir lo que proceda por:

System.Drawing.Color.FromName("#FFFF80")


Al final, el entorno Visual Studio genera esta línea por si puede ser más claro todo (click para ampliar):



Nada más.

1 comentario:

Anónimo dijo...

Muchas Gracias por tu aporte, me fue de gran ayuda.

Saludos desde Nicaragua...