Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > .NET
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-10-2004
mamen mamen is offline
Miembro
 
Registrado: jun 2004
Posts: 80
Poder: 20
mamen Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 04-10-2004
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 22
__hector Va por buen camino
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
El codigo esta en VB.NET, pero es facilmente portable a tu necesidad.

Suerte!
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #3  
Antiguo 06-10-2004
mamen mamen is offline
Miembro
 
Registrado: jun 2004
Posts: 80
Poder: 20
mamen Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 07-10-2004
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 22
__hector Va por buen camino
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.
Siendo ese el caso, tenemos que identificar los valores que queremos desplegar, asi que eso no lo encontraremos ni cuando llena los datos del header, ni del footer, ni del pager, etc etc. De ahi viene esa comparacion: para determinar cuando los valores que se estan "bindeando" son los correspondientes a las filas.

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.
Responder Con Cita
  #5  
Antiguo 11-10-2004
mamen mamen is offline
Miembro
 
Registrado: jun 2004
Posts: 80
Poder: 20
mamen Va por buen camino
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???
Responder Con Cita
  #6  
Antiguo 11-10-2004
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 22
__hector Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 21-10-2004
mamen mamen is offline
Miembro
 
Registrado: jun 2004
Posts: 80
Poder: 20
mamen Va por buen camino
Muchas gracias ya lo he solucionado. Tenias razón la comparación la tenia mal hecha.


Chao. Gracias.
Responder Con Cita
  #8  
Antiguo 06-10-2005
yorugua yorugua is offline
Registrado
 
Registrado: jun 2005
Posts: 6
Poder: 0
yorugua Va por buen camino
hola amigos
yo necesito hacer eso mismo con el datagrid pero en un winform de vb.net
¿pueden decirme cómo lo hago?
gracias
Responder Con Cita
  #9  
Antiguo 11-10-2005
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 22
__hector Va por buen camino
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
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 02:04:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi