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.CellValueChanged
GridView.CustomDrawCell
Create 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