在数据网格视图中更改数据之前捕获数据?

时间:2014-09-29 19:31:46

标签: c# datagridview

我的应用程序有一个数据绑定gridview控件。当某人更改单元格中的任何内容时,将更改后备数据源。当用户保存更改时,我基本上只是在使用:

var changes = ((DataTable)this.bindingSource1.DataSource).GetChanges(DataRowState.Modified);

使用changes集合,我可以更新相应的数据库表。

但是,现在,用户希望在数据之前和之后包含日志。我可以制作数据源的副本并保留它并比较更改的内容,然后用之前和之后写出日志。但是,有没有其他方法不需要我保留整个数据源的副本?我想只保留之前实际更改的数据图像,而不是整个数据源预更改。

我知道有一个事件,当一个细胞被改变时,我可以使用它。有没有办法通过使用此事件获取原始的预更改数据?但是,我无法想到如果事件仅在细胞发生变化时才会触发。

保存整个数据源似乎不切实际,所以我希望还有另一种方法可以做到这一点。

1 个答案:

答案 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