martes, 5 de mayo de 2009

Cambiar colores a un grid View


En este ejemplo muestro como pueden escribir codigo para que cuando pasen el mouse sobre grid cambie de color la fila que estan pocisionados, tambien muetro como pueden cambiar el color de una fila segun alguna condicion.


Ejemplo:


Todo esto se da con el evento RowDataBound


asi que capturenlo el evento del RowDataBound del griview como primer paso.


paso 2 agregue este if dentro del evento que acaba de capturar.

if (e.Row.RowType == DataControlRowType.DataRow)
{

}

tercero pongamos fondo para que señale que fila estan sobre ella para una mejor visibilidad.


para lograr eso agregue el siguiente codigo dentro del if de arriba.

e.Row.Attributes.Add("onmouseover", "this.originalcolor=this.style.backgroundColor;" & _" this.style.backgroundColor='yellow';")e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=this.originalcolor;")



Aquí ya logramos el un efecto visual util. ahora pongamos una condición.


Dentro del if DataControlRowType con el evento RowDataBound abajo de los colores
debe de capturar la fila que quiere analizar

string s = Convert.ToString(System.Web.UI.DataBinder.Eval(e.Row.DataItem, "status"));

luego un if para saber que color le queremos dar
if (s == "Denegado")
{
e.Row.BackColor = Color.red;
}
if (s == "Aprobado")
{
e.Row.BackColor = Color.Green;
}



Ejemplo Completo



if (e.Row.RowType == DataControlRowType.DataRow)
{

e.Row.Attributes.Add("onmouseover",
"this.originalcolor=this.style.backgroundColor;" +
" this.style.backgroundColor='yellow';");
e.Row.Attributes.Add("onmouseout",
"this.style.backgroundColor=this.originalcolor;");


string s = Convert.ToString(System.Web.UI.DataBinder.Eval(e.Row.DataItem, "status"));
if (s == "Denegado")
{
e.Row.BackColor = Color.red;
}
if (s == "Aprobado")
{
e.Row.BackColor = Color.Green;
}
}


Tambien podriasmos poner una imagen dependiendo de una columna, en nuestro ejemplo, vamos a verificar si la celda cero tiene un valor mayor a cero pondra un icono de documento adjunto, al mismo tiempo reemplazara esta misma columna cero,todo esto tambien va en el evento RowDataBound.



int valor = Convert.ToInt32(e.Row.Cells[0].Text);
if (valor > 0)
{
HyperLink hlnk = new HyperLink();
//hlnk.NavigateUrl = "http://www.google.com";
hlnk.ImageUrl = "~/image/adjunto.gif";
e.Row.Cells[0].Controls.Add(hlnk);
}
else
{
HyperLink hlnk = new HyperLink();
hlnk.ImageUrl = "";
e.Row.Cells[0].Controls.Add(hlnk);
}

No esta demas recordarles si les gusta el tema y les sirve favor dejar comentario. = ) gracias.

No hay comentarios.: