次の方法で共有


DataRow の削除

DataRow オブジェクトからDataTable オブジェクトを削除するには、 オブジェクトの DataRowCollection メソッドと Delete オブジェクトの メソッドの 2 つのメソッドを使用できます。 Remove メソッドは DataRowCollection から DataRow を削除しますが、 メソッドは削除対象の行のみをマークします。Delete 実際の削除は、アプリケーションが AcceptChanges メソッドを呼び出すときに発生します。 Deleteを使用すると、実際に削除する前に、削除対象としてマークされている行をプログラムで確認できます。 行が削除対象としてマークされている場合、その RowState プロパティは Deleteに設定されます。

Delete オブジェクトを反復処理するときに、foreach ループでRemoveDataRowCollectionも呼び出さないでください。 Delete または Remove はコレクションの状態を変更します。

DataSet およびリレーショナル データ ソースと共にまたは DataTable を使用する場合は、DataRowDelete メソッドを使用して行を削除します。 Delete メソッドは、DataSet または DataTable で行を Deleted としてマークしますが、削除しません。 代わりに、 DataAdapterDeleted としてマークされた行を検出すると、 DeleteCommand メソッドを実行してデータ ソースの行を削除します。 その後、 AcceptChanges メソッドを使用して行を完全に削除できます。 Remove を使用して行を削除すると、行はテーブルから完全に削除されますが、DataAdapter はデータ ソースの行を削除しません。

DataRowCollectionRemove メソッドは、次の例に示すように、DataRow を引数として受け取り、コレクションから削除します。

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

これに対し、次の例では、DataRowDelete メソッドを呼び出して、その RowStateDeleted に変更する方法を示します。

workRow.Delete  
workRow.Delete();  

行が削除対象としてマークされ、DataTable オブジェクトの AcceptChanges メソッドを呼び出すと、その行は DataTable から削除されます。 一方、 RejectChanges を呼び出すと、 行の RowState削除済みとしてマークされる前の状態に戻ります。

DataRowRowState追加された場合(つまり、テーブルに追加されたばかりで、削除済みとしてマークされている場合)、テーブルから削除されます。

こちらも参照ください