DataTable的AcceptChanges()和RejectChanges()方法

Posted .NET开发菜鸟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DataTable的AcceptChanges()和RejectChanges()方法相关的知识,希望对你有一定的参考价值。

一、DataTable.AcceptChanges()方法

提交自上次调用AcceptChanges()方法以来对该表进行的所有更改。调用AcceptChanges()时,任何扔处于编辑模式的DataRow对象将成功结束其编辑。DataRowState也会随之更改:所有状态为Added何Modified的行的状态都变为Unchanged;状态为Deleted的行则被移除。

在尝试使用DbDataAdapter.Update方法更新DataSet之后,通常会对DataTable调用AcceptChanges方法。

二、DataTable.RejectChanges()方法

回滚自该表加载以来或上次调用AcceptChanges()以来对该表进行的所有更改。调用RejectChanges时,任何扔处于编辑模式的DataRow对象将取消其编辑。新行被移除。DataRowState设置为Modified或Deleted的行返回到其初始状态。

使用Delete()方法后,RowState变成“Deleted”状态。在您调用AcceptChanges之前,它一直保持“Deleted”状态。可通过调用RejectChanges取消删除行。

用于从DataTable对象中删除DataRow对象的方法有两种:DataRowCollection对象的Remove()方法和DataRow对象的Delete()方法。Rwmove()方法从DataRowCollection中删除DataRow,而Delete()方法只是将行的状态标记为删除,当应用程序调用AcceptChanges()方法时,才会发生实际的删除。通过使用Delete()方法,您可以在实际删除之前先以编程的方式检查哪些行标记为删除。

在将 DataSet 或 DataTable 与 DataAdapter 和关系型数据源一起使用时,用 DataRow 的 Delete 方法移除行。Delete 方法只是在 DataSet 或 DataTable 中将行标记为 Deleted,而不会移除它。而 DataAdapter 在遇到标记为 Deleted 的行时,会执行其 DeleteCommand 方法以在数据源中删除该行。然后,就可以用 AcceptChanges 方法永久移除该行。如果使用 Remove 删除该行,则该行将从表中完全移除,但 DataAdapter 不会在数据源中删除该行。

以上是关于DataTable的AcceptChanges()和RejectChanges()方法的主要内容,如果未能解决你的问题,请参考以下文章

DataTable.AcceptChanges的理解

C#中DataTable删除行后 GrdData.Rows.Count行数没变,求解:

如何比较两个 DataTable 并返回差异?

c# datatable 指定行添加内容

如何判断当前修改过的datatable的某一列值是否为int型或double类型

工作单元