Eğer grid, DataTable veya BindingList bağlıysa en kolay yol:
Grid’in CellValueChanged veya RowUpdated event’inde eski değeri yakalayıp loglamaktır.
private Dictionary _oldValues = new Dictionary();
private void gridView1_CellValueChanging(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
{
// Değişmeden önceki değerini yakala
var oldVal = Convert.ToString(gridView1.GetRowCellValue(e.RowHandle, e.Column));
var key = $"{e.RowHandle}_{e.Column.FieldName}";
if (!_oldValues.ContainsKey(key))
_oldValues.Add(key, oldVal);
}private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
{
var key = $"{e.RowHandle}_{e.Column.FieldName}";
if (_oldValues.ContainsKey(key))
{
var oldVal = _oldValues[key];
var newVal = Convert.ToString(e.Value);if (oldVal != newVal)
{
var vParam = new Structs.StDbParamList();
vParam.Add("PKID", GetPrimaryKeyValue());
vParam.Add("FKID", GetPrimaryKeyValue());
vParam.Add("TABLOADI", "TABLE_ADI");
vParam.Add("KOLONADI", e.Column.FieldName);
vParam.Add("ESKIDEGER", oldVal);
vParam.Add("YENIDEGER", newVal);
vParam.Add("DEGISTIRENKULLANICI", DbStatic.LoginInfo.UserId);
vParam.Add("COMPANYID", DbStatic.LoginInfo.KurumId);DbStatic.VDbUtils.ExecuteTableInsert("LOG_TABLE_CHANGE", vParam, false, false);
}_oldValues.Remove(key);
}
}