"DataRow"-Löschung
Es gibt zwei Methoden zum Löschen eines DataRow-Objekts aus einem DataTable-Objekt: die Remove-Methode des DataRowCollection-Objekts und die Delete-Methode des DataRow-Objekts. Während die Remove-Methode eine DataRow aus der DataRowCollection löscht, wird die Zeile mit der Delete-Methode lediglich zum Löschen markiert. Das eigentliche Löschen erfolgt, wenn die Anwendung die AcceptChanges-Methode aufruft. Mithilfe von Delete können Sie programmgesteuert überprüfen, welche Zeilen zum Löschen markiert sind, bevor Sie sie tatsächlich entfernen. Wenn eine Zeile zum Löschen markiert ist, wird deren RowState-Eigenschaft auf Delete festgelegt.
Beim Durchlaufen eines Delete-Objekts sollten weder Remove noch DataRowCollection in einer foreach-Schleife aufgerufen werden. Der Auflistungszustand wird durch Delete und Remove nicht geändert.
Bei Verwendung eines DataSet oder einer DataTable in Verbindung mit einem DataAdapter und einer relationalen Datenquelle entfernen Sie die Zeile mithilfe der Delete-Methode der DataRow. Mit der Delete-Methode wird die Zeile als Deleted im DataSet oder in der DataTable markiert, aber sie wird nicht entfernt. Wenn stattdessen der DataAdapter eine als Deleted markierte Zeile vorfindet, führt er die DeleteCommand-Methode aus, um die Zeile in der Datenquelle zu löschen. Anschließend kann die Zeile mit der AcceptChanges-Methode dauerhaft entfernt werden. Wenn Sie zum Löschen der Zeile Remove verwenden, wird die Zeile zwar vollständig aus der Tabelle entfernt, vom DataAdapter jedoch nicht aus der Datenquelle gelöscht.
Die Remove-Methode der DataRowCollection akzeptiert eine DataRow als Argument und entfernt sie aus der Auflistung, wie im folgenden Beispiel dargestellt.
workTable.Rows.Remove(workRow)
workTable.Rows.Remove(workRow);
Im Gegensatz dazu zeigt das folgende Beispiel, wie Sie die Delete-Methode für eine DataRow aufrufen, um deren RowState in Deleted zu ändern.
workRow.Delete
workRow.Delete();
Wenn eine Zeile zum Löschen markiert ist und Sie die AcceptChanges-Methode des DataTable-Objekts aufrufen, wird die Zeile aus der DataTable entfernt. Im Gegensatz dazu wird beim Aufrufen von RejectChanges der RowState der Zeile wiederhergestellt, der gültig war, bevor die Zeile als Deleted markiert wurde.
Hinweis
Wenn der RowState einer DataRow den Wert Added aufweist, in dem Sinne, dass sie gerade der Tabelle hinzugefügt wurde, und dann als Deleted markiert wurde, wird sie aus der Tabelle entfernt.