![]() |
Estilo Filas DataGrid
Es posible que una fila de un datagrid tenga un color de fondo u otro dependiendo del valor que tenga en una determinada columna???
He mirado las propiedades del datagrid y lo único que he encontrado es ItemStyle (un mismo estilo para todas las filas) y AlternatingItemStyle. Si es posible me puedes decir cómo?? Muchas gracias por todo. |
Si.
En el evento itemdatabound del grid puedes trabajar con los estilos de acuerdo a el/los valores de las celdas. En este ejemplo, pongo el texto en negritas si el valor de una celda es igual a true. Código:
Private Sub grid_ItemDataBound(ByVal sender As Object, ByVal e As Suerte! |
No me he enterado muy bien, me lo puedes explicar mejor
Para que pones exactamente la condición del if, que significa??? If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.SelectedItem _ Or e.Item.ItemType = ListItemType.Item Then Otra cosilla con e.Item.Cells[5].Text te estas refiriendo a la columna 5 del datagrid pero yo lo que quiero es poner de un color una fila completamente, no una columna entera. No se si me explico bien. Si pongo e.Item[0].Cells.... asi intento referirme por ejemplo a la fila 0 pero me dice que no se reconoce Item. Muchas gracias. |
Pues fijate: si buscamos un poco en la ayuda de .NET, vemos que el parametro e lleva como tipo un elemento de la clase DataGridItemEventArgs. En la ayuda dice que este parametro ofrece los datos para los eventos de itemcreated e itemdatabound.
Si seguimos viendo, esta clase (ItemType) se comparte entre datagrid y datalists, y existen diferentes tipos: Código:
AlternatingItem An item in alternating (zero-based even-indexed) cells. It is data-bound. Asi que, cuando identificas una fila que cumple con una condicion (si la columna tal del grid tiene tal valor), solo tendrias que especificar la propiedad de estilo de cada celda de esa fila (teniendo en cuenta que esa rutina se ejecuta para cada fila que va escribiendo en la pagina), de la forma: si condicion e.item.cells[0].backcolor = talcosa e.item.cells[m].backcolor = talcosa |
Eso de las celdas ya lo habia pensado, pero el problema que tengo es que al poner
e.item.cells[0].backcolor = talcosa me pone el fondo a todas las celdas de dicha columna del datagrid, no a la celda de la fila que me interesa. Se supone que en e está la fila actual no??? Pues por q me pone el fondo al resto de filas??? |
Simple: la comparacion no la estas haciendo bien. Prueba a ver que la comparacion de los valores no siempre te devuelva true, porque en ese manejador del evento, cada operacion que hagas sobre e afecta solo a la fila actual.
|
Muchas gracias ya lo he solucionado. Tenias razón la comparación la tenia mal hecha.
Chao. Gracias. |
hola amigos
yo necesito hacer eso mismo con el datagrid pero en un winform de vb.net ¿pueden decirme cómo lo hago? gracias |
Un poco mas dificil es esta tarea. El DataGrid de SWF no soporta los metodos, ni tiene las propiedades ni eventos que el propio de los Webcontrols, pero seguro si existen sus equivalentes.
Navegando un momento me tope con este articulo que seguro te puede ser de utilidad: http://www.codeproject.com/csharp/Pr...DataGrids4.asp |
| La franja horaria es GMT +2. Ahora son las 07:49:45. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi