如何找出数据表中哪些行已更改值
How to find out which rows have changed values in a datatable
我想知道我的数据表中的行是否更改了值,如何检查?
我有一个数据表有数据,我通过网格视图对此数据进行了一些更改,所以我可以检查哪些行已更改。
每个 DataRow
都有一个 RowState
。当您通过在数据适配器上调用 Fill
来填充 DataTable
时,所有行都从 Unchanged
开始。当您添加一行时,该值将为 Added
,当您编辑现有行时,该值将为 Modified
,而当您删除现有行时,该值将为 Deleted
.
请注意,当您在数据适配器上调用 Fill
时,行最初会添加 Added
的 RowState
,但随后会调用 AcceptChanges
并且它们都将设置为 Unchanged
。如果先把AcceptChangesDuringFill
设置为False
,它们都会保持Added
。例如,当您想从一个数据库中检索然后插入到另一个数据库时,这很有用。
当您在数据适配器上调用 Update
以保存更改时,随后调用 AcceptChanges
并且所有 Added
和 Modified
行变为 Unchanged
并且所有 Deleted
行都被删除。如果你先把AcceptChangesDuringUpdate
设置成False
,它们都会保持原样。例如,当您想要将更改从一个 DataTable
保存到多个表时,这很有用。如果您想继续使用 DataTable
.
,您可以手动调用 AcceptChanges
请注意,每个 DataRow
包含其数据的两个版本:原始版本和当前版本。当您从 DataRow
中的字段获取数据时,默认情况下您将获取当前版本,但您可以指定所需的版本。如果 RowState
是 Added
那么原始版本是空的,如果 RowState
是 Deleted
那么当前版本是空的。调用 AcceptChanges
时,当前版本将复制到 Added
或 Modified
行中的原始版本。
您还可以在 DataTable
上调用 GetChanges
,这将 return Nothing
或仅包含更改行的新 DataTable
。您还可以指定一个或多个 DataRowState
值并仅获取该类型的更改。
我想知道我的数据表中的行是否更改了值,如何检查? 我有一个数据表有数据,我通过网格视图对此数据进行了一些更改,所以我可以检查哪些行已更改。
每个 DataRow
都有一个 RowState
。当您通过在数据适配器上调用 Fill
来填充 DataTable
时,所有行都从 Unchanged
开始。当您添加一行时,该值将为 Added
,当您编辑现有行时,该值将为 Modified
,而当您删除现有行时,该值将为 Deleted
.
请注意,当您在数据适配器上调用 Fill
时,行最初会添加 Added
的 RowState
,但随后会调用 AcceptChanges
并且它们都将设置为 Unchanged
。如果先把AcceptChangesDuringFill
设置为False
,它们都会保持Added
。例如,当您想从一个数据库中检索然后插入到另一个数据库时,这很有用。
当您在数据适配器上调用 Update
以保存更改时,随后调用 AcceptChanges
并且所有 Added
和 Modified
行变为 Unchanged
并且所有 Deleted
行都被删除。如果你先把AcceptChangesDuringUpdate
设置成False
,它们都会保持原样。例如,当您想要将更改从一个 DataTable
保存到多个表时,这很有用。如果您想继续使用 DataTable
.
AcceptChanges
请注意,每个 DataRow
包含其数据的两个版本:原始版本和当前版本。当您从 DataRow
中的字段获取数据时,默认情况下您将获取当前版本,但您可以指定所需的版本。如果 RowState
是 Added
那么原始版本是空的,如果 RowState
是 Deleted
那么当前版本是空的。调用 AcceptChanges
时,当前版本将复制到 Added
或 Modified
行中的原始版本。
您还可以在 DataTable
上调用 GetChanges
,这将 return Nothing
或仅包含更改行的新 DataTable
。您还可以指定一个或多个 DataRowState
值并仅获取该类型的更改。