Cuando quieras pintar las filas de un gridview de acuerdo a una condición, simplemente usamos el evento RowDataBound del gridview, es muy simple... dos pasos:
1.- Añadan Imports System.Drawing en la primera línea de su código
2.-Escriban el código respectivo en el evento RowDataBound, así:
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim Estado As String = DataBinder.Eval(e.Row.DataItem, "Estado")
If Estado = "Restringido" Then e.Row.BackColor = Color.FromName("#DARTDF") 'color que deseen
'o sino : Color.Red o Color.BurlyWood
End If
End If
End Sub
No estoy seguro que haya una forma más simple de hacerlo.
8 comentarios:
Podrias explciar mas deyallado el codigo para poder entenderlo mira lo que tengo que buscar en mi gridview es el valor 2000 que se encuentra en la 3 columna y en la 7columna debe de cambiar de color a rojo.
Hola conocuica,
Lo tuyo sería algo así:
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
If e.Row.Cells(2).Text = "2000" Then e.Row.Cells(6).BackColor = Color.Red
End If
End Sub
Saludos.
Hola que tal, muy interesante tu código, sin embargo te tengo una pregunta, como podría adaptar esto mediante el uso de DataKeys, lo que sucede es que tengo un Datakey, que conserva valores true o false que vienen de la bd, y quiero que en caso de que este true, sea de un color y si es false, este de otro. Muchas gracias.
hola, otra vez yo, disculpa en caso que no se pudiese con datakeys, sino que fuese con una columna checkbox (la 3), como podría hacer que cambiase el color según si el checkbox esta true o false?
Nuevamente muchas gracias.
Hola Jorge,
sería más o menos así:
Dim chk As CheckBox = DirectCast(e.Row.Cells(2).Controls(1), CheckBox)
If chk.Checked Then
'tu codigo para pintar la celda
End If
Segundo, tengo que decirte mil gracias me ha caído perfecto tu explicación justo lo que necesitaba, muy bueno tu blog, estaré visitándolo con frecuencia. Muchas gracias!!!
oye gracias esta de poca tu explicacion
bien :-)
Hola, buscando información sobre este tema, coincidí con lo que estaba buscando Jorge (pintar de otro color a la fila seleccionado con el checkbox), lo que quiero saber es donde coloco el siguiente código:
Dim chk As CheckBox = DirectCast(e.Row.Cells(1).Controls(1), CheckBox)
If chk.Checked Then
e.Row.CssClass = "mgrvselected"
End If
yo lo puse en el rowdatabound de mi datagridview y me sale este error:
El argumento especificado está fuera del intervalo de valores válidos.
Nombre del parámetro: index
ayúdenme profa.
Publicar un comentario