次の方法で共有


DataView を使用したデータの変更

DataView を使用して、基になるテーブルでのデータ行を追加、削除、または変更できます。基になるテーブルのデータを DataView で変更できるかどうかは、DataView の 3 つのブール値プロパティで制御されます。この 3 つのプロパティとは、AllowNewAllowEdit、および AllowDelete です。これらのプロパティの既定値は true です。

AllowNewtrue の場合は、DataViewAddNew メソッドを使用して DataRowView を新規に作成できます。DataRowViewEndEdit メソッドが呼び出されるまでは、新規に作成された行は基になる DataTable に追加されません。DataRowViewCancelEdit メソッドが呼び出されると、新規に作成された行は無視されます。さらに、一度に 1 つの DataRowView だけを編集できます。保留中の行がある場合は、DataRowViewAddNew メソッドまたは BeginEdit メソッドを呼び出すと、保留中の行に対して EndEdit が暗黙的に呼び出されます。EndEdit が呼び出されると、基になる DataTable に対して変更が適用されます。適用された変更をコミットするには DataTableDataSet、または DataRow の各オブジェクトの AcceptChanges メソッドを使用し、拒否するにはこれらのオブジェクトの RejectChanges メソッドを使用します。AllowNewfalse の場合は、DataRowViewAddNew メソッドを呼び出すと例外がスローされます。

AllowEdittrue の場合は、DataRowView を使用すると DataRow の内容を変更できます。基になる行の変更をコミットするには DataRowView.EndEdit を使用し、変更を拒否するには DataRowView.CancelEdit を使用します。一度に編集できるのは 1 行だけです。保留中の行がある場合は、DataRowViewAddNew メソッドまたは BeginEdit メソッドを呼び出すと、保留中の行に対して EndEdit が暗黙的に呼び出されます。EndEdit が呼び出されると、基になる DataRowCurrent 行バージョンに対して変更が適用されます。適用された変更をコミットするには DataTableDataSet、または DataRow の各オブジェクトの AcceptChanges メソッドを使用し、拒否するにはこれらのオブジェクトの RejectChanges メソッドを使用します。AllowEditfalse の場合は、DataRowView の値を変更しようとすると例外がスローされます。

既存の DataRowView の編集中でも、まだ確定されていない変更に関して、基になる DataTable のイベントが発生する場合があります。DataRowView に対して EndEditCancelEdit のどちらが呼び出されているかに関係なく、基になる DataRow に対して EndEdit を呼び出すと、確定されていない変更が適用され、CancelEdit を呼び出すと、確定されていない変更が取り消されます。

AllowDeletetrue の場合は、DataView オブジェクトまたは DataRowView オブジェクトの Delete メソッドを使用して DataView の行を削除できます。DataView の行を削除すると、基になる DataTable から行が削除されます。後でこの削除操作をコミットするには AcceptChanges を使用し、拒否するには RejectChanges を使用します。AllowDeletefalse の場合は、DataView または DataRowViewDelete メソッドを呼び出すと例外がスローされます。

次のコード例は、DataView を使用して行を削除する機能を無効にし、DataView を使用して基になるテーブルに新しい行を追加します。

Dim custTable As DataTable = custDS.Tables("Customers")
Dim custView As DataView = custTable.DefaultView
custView.Sort = "CompanyName"

custView.AllowDelete = False

Dim newDRV As DataRowView = custView.AddNew()
newDRV("CustomerID") = "ABCDE"
newDRV("CompanyName") = "ABC Products"
newDRV.EndEdit()
[C#]
DataTable custTable = custDS.Tables["Customers"];
DataView custView = custTable.DefaultView;
custView.Sort = "CompanyName";

custView.AllowDelete = false;

DataRowView newDRV = custView.AddNew();
newDRV["CustomerID"] = "ABCDE";
newDRV["CompanyName"] = "ABC Products";
newDRV.EndEdit();

参照

DataView の作成と使用 | DataTable クラス | DataView クラス | DataRowView クラス