我的应用程序有一个数据绑定gridview控件。当某人更改单元格中的任何内容时,将更改后备数据源。当用户保存更改时,我基本上只是在使用:
var changes = ((DataTable)this.bindingSource1.DataSource).GetChanges(DataRowState.Modified);
使用changes
集合,我可以更新相应的数据库表。
但是,现在,用户希望在数据之前和之后包含日志。我可以制作数据源的副本并保留它并比较更改的内容,然后用之前和之后写出日志。但是,有没有其他方法不需要我保留整个数据源的副本?我想只保留之前实际更改的数据图像,而不是整个数据源预更改。
我知道有一个事件,当一个细胞被改变时,我可以使用它。有没有办法通过使用此事件获取原始的预更改数据?但是,我无法想到如果事件仅在细胞发生变化时才会触发。
保存整个数据源似乎不切实际,所以我希望还有另一种方法可以做到这一点。
答案 0 :(得分:1)
dgv.CurrentCellDirtyStateChanged += new EventHandler(dgv_CurrentCellDirtyStateChanged);
void dgv_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
//Work here, this is called before the cell change has been comitted
}
有关此活动的详情,请参阅here