DataViewを使用して、基になるテーブル内のデータ行を追加、削除、または変更できます。 DataView を使用して基になるテーブル内のデータを変更する機能は、DataView の 3 つのブール型プロパティのいずれかを設定することによって制御されます。 この 3 つのプロパティとは、AllowNew、AllowEdit および AllowDelete です。 既定では true に設定されています。
AllowNew が true の場合は、AddNew の メソッドを使用して新しいDataRowViewを作成できます。 DataTable のEndEdit メソッドが呼び出されるまで、基になるに新しい行が実際に追加されないことに注意してください。 CancelEdit の メソッドが呼び出されると、新しい行は破棄されます。 また、一度に編集できる DataRowView は 1 つだけであることにも注意してください。 保留中の行が存在する間に DataRowView の AddNew メソッドまたは BeginEdit メソッドを呼び出すと、保留中の行に対して EndEdit が暗黙的に呼び出されます。 EndEdit が呼び出されると、変更は基になる DataTable に適用され、後で DataTable、DataSet、または DataRow オブジェクトの AcceptChanges メソッドまたは RejectChanges メソッドを使用してコミットまたは拒否できます。 AllowNew が false の場合、DataRowView の AddNew メソッドを呼び出すと例外がスローされます。
AllowEdit が true の場合は、DataRowView を使用して DataRow の内容を変更できます。 基になる行に対する変更は 、DataRowView.EndEdit を使用して確認することも、 DataRowView.CancelEdit を使用して変更を拒否することもできます。 一度に編集できる行は 1 つだけであることに注意してください。 保留中の行が存在する間に DataRowView の AddNew メソッドまたは BeginEdit メソッドを呼び出すと、保留中の行に対して EndEdit が暗黙的に呼び出されます。 EndEdit が呼び出されると、提案された変更は基になる DataRow の現在の行バージョンに配置され、後で DataTable、DataSet、または DataRow オブジェクトの AcceptChanges メソッドまたは RejectChanges メソッドを使用してコミットまたは拒否できます。 AllowEdit が false の場合、DataView の値を変更しようとすると例外がスローされます。
既存の DataRowView が編集されている場合、基になる DataTable のイベントは、提案された変更で引き続き発生します。 基になる DataRow で EndEdit または CancelEdit を呼び出した場合、DataRowView で EndEdit または CancelEdit が呼び出されたかどうかに関係なく、保留中の変更が適用または取り消されることに注意してください。
AllowDelete が true の場合は、DataView オブジェクトまたは DataRowView オブジェクトの Delete メソッドを使用して DataView から行を削除でき、基になる DataTable から行が削除されます。 後で AcceptChanges または RejectChanges を使用して、削除をコミットまたは 拒否 できます。 AllowDelete が false の場合、DataView または DataRowView の Delete メソッドを呼び出すと例外がスローされます。
次のコード例では、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();