我有一个从数据库填充的数据表。我用那个表加载了一个绑定源。
Sub LoadData()
Dim bsTemp As BindingSource = New BindingSource
bsTemp.DataSource = dtTemp
End Sub
然后我有其他代码以编程方式编辑数据表中的值。我从不打电话给 AcceptChanges() ..让我永远不要说清楚。
我确实调用了 bsTem.EndEdit() 并且每当我对其进行更改时,我也会在我的 dtTemp.Row(x).EndEdit() 上调用它。
所以现在我要做的就是比较两行(我知道我可以为每一列做这个,但我不想这样做。)
我想知道如何使这项工作:
Dim modview As New DataView(dtTemp.Copy, "", "Id", DataViewRowState.ModifiedCurrent)
Dim origView As New DataView(dtTemp.Copy, "", "Id", DataViewRowState.ModifiedOriginal)
所以我可以执行如下操作:
Dim rowComparer As DataRowComparer(Of DataRow) = DataRowComparer.Default
IsEqual = rowComparer.Equals(origRow.Row, modRow.Row)
当我这样做时,两个视图都显示修改后的数据,其中一个应该只显示原始未修改行。
我知道我可以做到这一点 [C# 版本]:
SomeDataRow[0, DataRowVersion.Original] //by index
SomeDataRow["ColumnName", DataRowVersion.Original]
但是 tis 还是在逐列的基础上工作 - 我是迭代器 - 当 DataView 据说内置了这个时,我认为没有理由这样做。那么我做错了什么,我没有看到原始版本。