How can I change the XtrsGrid\'s (GridControl) cell background after its value has been updated/changed/edited?
Can I do it in following event:
AddHandle
I finally managed to do it in the following way!
GridView.CellValueChangedGridView.CustomDrawCellCreate a class and three fields in it.
Public Class UpdatedCell
'UC means UpdatedCll
Public Property UCFocusedRow As Integer
Public Property UCFocusedColumnIndex As Integer
Public Property UCFieldName As String
Public Sub New()
UCFocusedRow = -1
UCFocusedColumnIndex = -1
UCFieldName = String.Empty
End Sub
End Class
Initialize the list in your Form1_Load function.
Public lst As List(Of UpdatedCell) = New List(Of UpdatedCell)()
Now, in GridView.CellValueChanged event, do the following:
Private Sub grdView_CellValueChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs)
Dim currCell As New UpdatedCell
currCell.UCFocusedRow = e.RowHandle
currCell.UCFocusedColumnIndex = e.Column.AbsoluteIndex
currCell.UCFieldName = e.Column.FieldName
lst.Add(currCell)
End Sub
Now, do the following in GridView.CustomDrawCell event:
Private Sub grdView_CustomDrawCell(sender As Object, e As RowCellCustomDrawEventArgs)
Dim prevColor As Color = e.Appearance.BackColor
For Each c As UpdatedCell In lst
If e.RowHandle = c.UCFocusedRow And
e.Column.AbsoluteIndex = c.UCFocusedColumnIndex And
e.Column.FieldName = c.UCFieldName Then
e.Appearance.BackColor = Color.Yellow
Else
If Not e.Appearance.BackColor = Color.Yellow Then
e.Appearance.BackColor = prevColor
End If
End If
Next
End Sub
Note that the argument e As RowCellCustomDrawEventArgs contains all required information. We just need to care of edited cells indices because GridView.CustomDrawCell calls every time row/column focus is changed.
See the result.
Before

And After

NOTE that yellow cells have different values that I changed using inline/inplace editor.
Thanks