C# 在它之前捕获数据';在datagridview中更改了什么?

C# 在它之前捕获数据';在datagridview中更改了什么?,c#,datagridview,C#,Datagridview,我的应用程序有一个数据绑定的gridview控件。当有人更改单元格中的任何内容时,支持数据源也会更改。当用户保存更改时,我基本上只是开始使用: var changes = ((DataTable)this.bindingSource1.DataSource).GetChanges(DataRowState.Modified); 通过更改集合,我可以更新相应的数据库表 然而,现在,用户希望有一个日志来包含前后数据。我可以复制一份数据源并保存它,比较更改的内容,然后写出一个日志,记录更改前后的数据

我的应用程序有一个数据绑定的gridview控件。当有人更改单元格中的任何内容时,支持数据源也会更改。当用户保存更改时,我基本上只是开始使用:

var changes = ((DataTable)this.bindingSource1.DataSource).GetChanges(DataRowState.Modified);
通过
更改
集合,我可以更新相应的数据库表

然而,现在,用户希望有一个日志来包含前后数据。我可以复制一份数据源并保存它,比较更改的内容,然后写出一个日志,记录更改前后的数据。但是,难道没有其他方法不需要我保存整个数据源的副本吗?我只想保留实际更改的数据的前映像,而不是整个数据源的预更改

我知道我可以使用一个事件,当一个单元格被更改时触发。是否有方法通过使用此事件获取原始的预更改数据?但是,我想不出是怎么发生的,因为只有当单元格发生变化时才会触发事件

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

    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
    }

有关此事件的更多信息,请参见

,它与我所需的完全相同。非常感谢!