Re: How to format individual cells or rows of a VB.NET DataGrid?
- From: "Richard" <Richard@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Tue, 5 Jul 2005 08:52:03 -0700
Thanks for the help. It's working great.
My next question is: How do I change the format of other cells on the same
As in your example, if the first cell of current row contains "Test", the
background color of the first cell wil be changed to RED, and the font color
is changed to WHITE. How do I propagate the same format to the rest cells
basing on the value of the FIRST cell?
> Hi Richard,
> You can do this by inheriting DataGridTextBoxColumn and overriding the Paint
> method to conditionally
> change the cell format. Here is an example that colors cells based on their
> Public Class DataGridColoredTextBoxColumn
> Inherits DataGridTextBoxColumn
> Public Sub New()
> End Sub
> Protected Overloads Overrides Sub Paint(ByVal g As Graphics, ByVal
> bounds As Rectangle, ByVal source As CurrencyManager, ByVal rowNum As
> Integer, ByVal backBrush As Brush, ByVal foreBrush As Brush, ByVal
> alignToRight As Boolean)
> Dim o As Object
> o = Me.GetColumnValueAtRow(source, rowNum)
> If (Not (o) Is Nothing) Then
> Dim c As Char
> c = CType(o, String).Substring(0, 1)
> If (c = "Test") Then
> backBrush = new SolidBrush(Color.Red);
> foreBrush= new SolidBrush(Color.White);
> End If
> End If
> Catch ex As Exception
> ' empty catch
> MyBase.Paint(g, bounds, source, rowNum, backBrush,
> foreBrush, alignToRight)
> End Try
> End Sub
> End Class
> Hope this helps.
> "Richard" <Richard@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
> >I know that you can format a grid and its columns using DataGridTableStyle
> > and DataGridTextBoxColumn in VB.NET. But can you change the format of the
> > individual rows, or even cells, to something other than the default?
> > For instance, I have a datagrid displaying a list of products in stock. I
> > want to highlight the products in red if the product is out of stock. How
> > should I implement this?
> > Please let me know if you have the answer. Thanks.