绑定到 DataGridView 的 DataTable 中的事件值已更改

Event Value changed in DataTable bound to DataGridView

我在绑定到 DataGridView 的数据库中的 DataSet 中有 DataTable。如果数据发生变化,我想显示状态。所以我使用 DataGridView 的 CellValueChanged 事件作为触发器。在事件例程中,如果真的有变化,我会使用 DataSet.HasChanges 检查 DataSet 中的变化。但那还为时过早,我认为 DataGridView 当时没有更新 DataTable。从第 2 个更改开始它起作用。是否有另一个事件在更新数据后被触发 table?

使用 DataTable.ColumnChanged Event 进行更改,按 TABENTER 以获得原始值和建议值。在下面的例子中我们首先订阅DataTable的ColumnChanged事件

someDataTable.ColumnChanged += ColumnChanged;

然后,在这种情况下显示值 Visual Studio 输出 window

public void ColumnChanged(object sender, DataColumnChangeEventArgs e)
{
    Console.WriteLine($"       Column name {e.Column.ColumnName}");
    Console.WriteLine($"    Original value [{e.Row[e.Column.ColumnName, DataRowVersion.Original]}]");
    Console.WriteLine($"    Propose value [{e.ProposedValue}]");
}

或有选择性

public void ColumnChanged(object sender, DataColumnChangeEventArgs e)
{
    if (
        e.Row.RowState == DataRowState.Deleted || 
        e.Row.RowState == DataRowState.Detached || 
        e.Row.RowState == DataRowState.Added) 
        return;

    Console.WriteLine($"       Column name {e.Column.ColumnName}");
    Console.WriteLine($"    Original value [{e.Row[e.Column.ColumnName, DataRowVersion.Original]}]");
    Console.WriteLine($"    Propose value [{e.ProposedValue}]");

}