DataRow 删除

可以使用两种方法从DataTable对象中删除DataRow对象:DataRowCollection对象的Remove方法,以及DataRow对象的Delete方法。 Remove方法虽然从 DataRowCollection 中删除了一行,但Delete方法只标记该行以供删除。 当应用程序调用 AcceptChanges 该方法时,将发生实际删除。 使用Delete编程方式可以检查哪些行已标记为要删除,然后再实际删除它们。 当行标记为要删除时,其 RowState 属性将设置为 Delete

在遍历Delete对象时,切勿在 foreach 循环中调用RemoveDataRowCollectionDeleteRemove 不会修改该集合的状态。

在将 DataSetDataTableDataAdapter 及关系数据源一起使用时,请使用 DataRowDelete 方法来删除该行。 该Delete方法将行在DataSetDataTable中标记为Deleted,但不会将其删除。 相反,当遇到标记为 DataAdapter 的行时,它会执行其DeleteCommand方法以删除数据源中的行。 然后,可以使用 AcceptChanges 方法永久删除该行。 如果用于 Remove 删除该行,该行将完全从表中删除,但 DataAdapter 不会删除数据源中的行。

Remove DataRowCollection 方法接受一个参数DataRow,并将其从集合中移除,如以下示例所示。

workTable.Rows.Remove(workRow)
workTable.Rows.Remove(workRow);

相反,以下示例演示如何在 DataRow 上调用 Delete 方法,以将其 RowState 更改为 Deleted

workRow.Delete
workRow.Delete();

如果行标记为要删除,并且调用 AcceptChanges 对象的方法 DataTable ,则会从 DataTable 中删除该行。 相比之下,如果调用 RejectChanges,则行 RowState 会恢复到被标记为 已删除 之前的状态。

注释

如果RowStateDataRow添加,这意味着它刚刚被添加到表中,然后将其标记为已删除,则会将其从表中删除。

另请参阅