FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
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 System.Web.UI.WebControls.DataGridItemEventArgs) Handles gridSolicitudes.ItemDataBound If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.SelectedItem _ Or e.Item.ItemType = ListItemType.Item Then e.Item.Font.Bold = e.Item.Cells(5).Text End If End Sub Suerte!
__________________
Héctor Geraldino Software Engineer |
#3
|
|||
|
|||
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. |
#4
|
||||
|
||||
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. EditItem An item in a list control currently in edit mode. It is data-bound. Footer A footer for the list control. It is not data-bound. Header A header for the list control. It is not data-bound. Item An item in the list control. It is data-bound. Pager A pager that displays the controls to navigate to different pages associated with the DataGrid control. It is not data-bound. SelectedItem A selected item in the list control. It is data-bound. Separator A separator between items in a list control. It is not 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
__________________
Héctor Geraldino Software Engineer Última edición por dec fecha: 07-10-2005 a las 21:41:28. Razón: Ajustar el ancho del texto. |
#5
|
|||
|
|||
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??? |
#6
|
||||
|
||||
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.
__________________
Héctor Geraldino Software Engineer |
#7
|
|||
|
|||
Muchas gracias ya lo he solucionado. Tenias razón la comparación la tenia mal hecha.
Chao. Gracias. |
#8
|
|||
|
|||
hola amigos
yo necesito hacer eso mismo con el datagrid pero en un winform de vb.net ¿pueden decirme cómo lo hago? gracias |
#9
|
||||
|
||||
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
__________________
Héctor Geraldino Software Engineer |
|
|
|