每次用户更改我的 DataGridView 中一个可编辑列中的值时,都会触发最多 8 个字段的重新计算。这意味着 DataGridView 上的事件 CellValueChanged 事件将触发超过 1 次。
我想在 DataSet.DataTable 中创建一行,其中包含用户更改值后所有列的新值。
我遇到的问题是,下面的代码为由于重新计算的列而改变其值的每一列创建一行。
Private Sub PL_DGV_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles PL_DGV.CellValueChanged
If isLoaded Then
Dim grid_row As DataRow = Me.DataSet.PL.Rows(e.RowIndex)
Dim unsaved_row As DataRow = grid_row
Me.DataSet.PL_UnsavedChanges.ImportRow(unsaved_row)
unsaved_changes = True
End If
End Sub
我怎样才能做到这一点,如果一行已经存在,它每次都会更新其中的值?
DataSet 中没有为 DataTable 分配 PrimaryKey,但有 3 列将用作每行的唯一值。
[根据评论更新]
使用上面显示的代码,用户将更新第 1 列中的值 >
触发事件并创建新行,其中将包含第 1 列中的新值 >
第 2 列根据第 1 列的变化重新计算 >
触发事件并创建新行,其中将包括第 1 列和第 2 列中的新值 >
第 3 列是根据前面提到的任一列的更改重新计算的 >
触发事件并创建新行,其中将在第 1 列、第 2 列和第 3 列中包含新值。
我想要实现的是有 1 行将包含所有新值,不需要生成任何其他行,但需要生成包含用户操作的更改和基于此的任何重新计算的行。