If you are using a DataTable datasource, a simpler way to do this is to handle TableControlPrepareViewStyleInfo and compare the current value of the record field to the orginal value (which you can get from the DataRow), and then color it if they are different.
private void gridGroupingControl1_TableControlPrepareViewStyleInfo(object sender, GridTableControlPrepareViewStyleInfoEventArgs e)
{
GridTableCellStyleInfo style = e.TableControl.Model[e.Inner.RowIndex, e.Inner.ColIndex];
if((style.TableCellIdentity.TableCellType == GridTableCellType.RecordFieldCell
|| style.TableCellIdentity.TableCellType == GridTableCellType.AlternateRecordFieldCell)
&& style.TableCellIdentity.DisplayElement != null)
{
DataRowView drv = style.TableCellIdentity.DisplayElement.GetData() as DataRowView;
if(drv != null && !drv.Row[style.TableCellIdentity.Column.Name, DataRowVersion.Original].Equals(style.CellValue))
{
//Console.WriteLine("******" + drv[style.TableCellIdentity.Column.Name]);
e.Inner.Style.BackColor = Color.Red;
}
}
}