Ya he buscado en hilos anteriores, pero me resultan muy dificil de
implementar las soluciones que dan. :(
Gracias, Daniel
¿Que te parece esta? Asigna el resultado de CrearTableStyle a la condicion
TableStyles del DataGrid.
Public Function CrearTableStyle( _
ByVal dt As DataTable) As DataGridTableStyle
Dim ts As New DataGridTableStyle
Dim i As Integer
For i = 0 To dt.Columns.Count - 1
Dim gc As New MiDataGridColumn
gc.HeaderText = dt.Columns(i).ColumnName
gc.MappingName = dt.Columns(i).ColumnName
ts.GridColumnStyles.Add(gc)
Next
ts.MappingName = dt.TableName
Return ts
End Function
Public Class MiDataGridColumn
Inherits DataGridTextBoxColumn
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 drv As DataRowView = CType(source.List.Item(rowNum),
DataRowView)
' Poner color rojo de fondo si cumple condicion
If CONDICION AQUI!!! Then
Dim br As New SolidBrush(Color.Red)
MyBase.Paint(g, bounds, source, rowNum, br, foreBrush,
alignToRight)
br.Dispose()
Else
MyBase.Paint(g, bounds, source, rowNum, backBrush, foreBrush,
alignToRight)
End If
End Sub
End Class
--
Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
yo lo coloque asi
=================================================
DataGrid1.TableStyles.Add(Me.CrearTableStyle(dt))
'donde dt es mi datatable
=================================================
en la condicion puse esto:
' Poner color rojo de fondo si cumple condicion
Dim xx As String = GetColumnValueAtRow(source, rowNum)
If xx.StartsWith("ISSA") Then
Dim br As New SolidBrush(Color.Red)
.....
=================================================
y me da este error:
Excepción no controlada del tipo 'System.InvalidCastException' en
system.windows.forms.dll
Información adicional: La conversión del tipo 'DBNull' al tipo 'String' no
es válida.
=================================================
como veras son novate en .NET... te agradezco tu respuestas
Daniel
"Eduardo A. Morcillo [MS MVP VB]" <emorcillo_at_mvps.org> escribió en el
mensaje news:e88GQeFN...@tk2msftngp13.phx.gbl...
> Dim xx As String = GetColumnValueAtRow(source, rowNum)
Estas haciendo una conversion implicita de Object a String. Dicha conversion
falla en el caso de que el campo contenga un NULL porque no se puede
convertir de NULL a String. Llama a la funcion ToString del objeto devuelto
para obtener siempre un String:
Dim xx As String = GetColumnValueAtRow(source, rowNum).ToString()
Gracias!!
Daniel
"Eduardo A. Morcillo [MS MVP VB]" <emorcillo_at_mvps.org> escribió en el
mensaje news:eozinWGN...@TK2MSFTNGP11.phx.gbl...
Dim drv As DataRowView = CType(source.List.Item(rowNum),DataRowView)
If drv.Item("MiCampo").ToString.StartsWith("ISSA") Then
...
bye bye
Daniel
"Eduardo A. Morcillo [MS MVP VB]" <emorcillo_at_mvps.org> escribió en el
mensaje news:%23uKWwrG...@TK2MSFTNGP09.phx.gbl...