DataRow の削除
DataTable オブジェクトから DataRow オブジェクトを削除するには、DataRowCollection オブジェクトの Remove メソッドと DataRow オブジェクトの Delete メソッドの 2 つのメソッドを使用できます。 Remove メソッドは DataRowCollection から DataRow を削除しますが、一方の Delete メソッドは削除対象の行をマークするだけです。 実際の削除は、アプリケーションが AcceptChanges メソッドを呼び出すと実行されます。 Delete を使用すると、行を実際に削除する前に、削除対象としてどの行がマークされているかをプログラムによってチェックできます。 削除対象としてマークされている行の RowState プロパティは、Deleted に設定されます。
DataAdapter およびリレーショナル データ ソースに関連して DataSet または DataTable を使用するときは、DataRow の Delete メソッドを使用して行を削除します。 Delete メソッドは、DataSet または DataTable の行を Deleted としてマークしますが、その行を削除しません。 代わりに、DataAdapter が Deleted としてマークされた行を検出したときに DeleteCommand メソッドを実行して、データ ソースの該当する行を削除します。 その後、AcceptChanges メソッドを使用して、その行を永続的に削除できます。 Remove を使用して行を削除すると、行はテーブルから完全に削除されますが、DataAdapter はデータ ソースの該当する行を削除しません。
DataRowCollection の Remove メソッドが DataRow を引数として受け取り、その行をコレクションから削除する例を次に示します。
workTable.Rows.Remove(workRow)
workTable.Rows.Remove(workRow);
これに対して、DataRow の Delete メソッドを呼び出して、該当する行の RowState を Deleted に変更する例を次に示します。
workRow.Delete
workRow.Delete();
行を削除対象としてマークしてから DataTable オブジェクトの AcceptChanges メソッドを呼び出すと、その行が DataTable から削除されます。 これに対して、RejectChanges を呼び出すと、行の RowState はその行が Deleted としてマークされる前の状態に戻ります。
メモ |
---|
DataRow の RowState が Added である場合、つまりテーブルに行が追加された直後の状態の場合に、その行を Deleted としてマークすると、その行はテーブルから削除されます。 |