次の方法で共有


DataView の変更 (ADO.NET)

更新 : November 2007

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 の場合は、DataView の値を変更しようとすると例外がスローされます。

既存の 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()
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();

参照

参照

DataTable

DataView

DataRowView

その他の技術情報

DataView (ADO.NET)