color de filas en datagrid

18/05/2006 - 20:32 por Jose | Informe spam
Estimados. Como hacer para que una o varias filas de mi datagrid muestren un
color dependiendo del status de una columna.
La idea es que si el registro es igual a 1 se pinte todo ese registro de un
color, si es igual a 2 de otro color etc.

Gracias por la ayuda.

Uso vb.net 2003

Preguntas similare

Leer las respuestas

#1 Luis Miguel Blanco
19/05/2006 - 08:16 | Informe spam
Hola Jose

Prueba a utilizar un estilo para el datagrid acompañado de estilos de
columna para cada una de las columnas que quieras mostrar. Adicionalmente,
cada columna debería ser una clase heredada de DataGridTextBoxColumn, en la
que reemplazarías el evento Paint(), de forma que personalizaras el color a
pintar en cada celda cuando se de el caso de que la fila a mostrar sea una de
las que te interese destacar. Te adjunto a continuación un bloque de código
con un ejemplo para que lo pruebes, y en caso de que te sea válido, lo
adaptes a tu caso.

'/////////////////////////////////
Public Class Form1
Inherits System.Windows.Forms.Form

Private oConnection As SqlConnection
Private oDataAdapter As SqlDataAdapter
Private oDataSet As DataSet

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
oConnection = New
SqlConnection("Server=localhost;Database=Northwind;uid=sa;pwd=")
oDataAdapter = New SqlDataAdapter("SELECT
ProductID,ProductName,QuantityPerUnit FROM Products", oConnection)
oDataSet = New DataSet

oConnection.Open()
oDataAdapter.Fill(oDataSet, "Products")
oConnection.Close()

Dim oTableStyle As New DataGridTableStyle
oTableStyle.MappingName = "Products"

Me.DataGrid1.DataSource = oDataSet
Me.DataGrid1.DataMember = "Products"

Dim colProductID As New DGTxtColColor
colProductID.MappingName = "ProductID"
colProductID.HeaderText = "Código"
colProductID.ColorFondoCondicion = Color.Gold

Dim colProductName As New DGTxtColColor
colProductName.MappingName = "ProductName"
colProductName.HeaderText = "Nombre"
colProductName.ColorFondoCondicion = Color.Gold

Dim colCantidad As New DGTxtColColor
colCantidad.MappingName = "QuantityPerUnit"
colCantidad.HeaderText = "Cantidad"
colCantidad.ColorFondoCondicion = Color.Gold

oTableStyle.GridColumnStyles.AddRange(New DataGridColumnStyle() _
{colProductID, colProductName, colCantidad})

Me.DataGrid1.TableStyles.Add(oTableStyle)
End Sub
End Class

Public Class DGTxtColColor
Inherits DataGridTextBoxColumn

Private mColorFondoCondicion As Color

Public Property ColorFondoCondicion() As Color
Get
Return mColorFondoCondicion
End Get
Set(ByVal Value As Color)
mColorFondoCondicion = Value
End Set
End Property

Protected Overloads Overrides Sub Paint(ByVal g As
System.Drawing.Graphics, _
ByVal bounds As System.Drawing.Rectangle, _
ByVal source As System.Windows.Forms.CurrencyManager, _
ByVal rowNum As Integer, _
ByVal backBrush As System.Drawing.Brush, _
ByVal foreBrush As System.Drawing.Brush, _
ByVal alignToRight As Boolean)

Dim oBrush As SolidBrush

Select Case rowNum
Case 1, 3, 7, 8
oBrush = New SolidBrush(mColorFondoCondicion)
Case Else
oBrush = backBrush
End Select

MyBase.Paint(g, bounds, source, rowNum, _
oBrush, _
foreBrush, _
alignToRight)
End Sub
End Class
'/////////////////////////////////

Espero que te sea de utilidad.
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Jose" wrote:

Estimados. Como hacer para que una o varias filas de mi datagrid muestren un
color dependiendo del status de una columna.
La idea es que si el registro es igual a 1 se pinte todo ese registro de un
color, si es igual a 2 de otro color etc.

Gracias por la ayuda.

Uso vb.net 2003



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida