次の方法で共有


DataViews の変更

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

AllowNewtrue の場合は、AddNew メソッドを使用して新しいDataRowViewを作成できます。 DataTableEndEdit メソッドが呼び出されるまで、基になるに新しい行が実際に追加されないことに注意してください。 CancelEdit メソッドが呼び出されると、新しい行は破棄されます。 また、一度に編集できる DataRowView は 1 つだけであることにも注意してください。 保留中の行が存在する間に DataRowViewAddNew メソッドまたは BeginEdit メソッドを呼び出すと、保留中の行に対して EndEdit が暗黙的に呼び出されます。 EndEdit が呼び出されると、変更は基になる DataTable に適用され、後で DataTableDataSet、または DataRow オブジェクトの AcceptChanges メソッドまたは RejectChanges メソッドを使用してコミットまたは拒否できます。 AllowNewfalse の場合、DataRowViewAddNew メソッドを呼び出すと例外がスローされます。

AllowEdittrue の場合は、DataRowView を使用して DataRow の内容を変更できます。 基になる行に対する変更は 、DataRowView.EndEdit を使用して確認することも、 DataRowView.CancelEdit を使用して変更を拒否することもできます。 一度に編集できる行は 1 つだけであることに注意してください。 保留中の行が存在する間に DataRowViewAddNew メソッドまたは BeginEdit メソッドを呼び出すと、保留中の行に対して EndEdit が暗黙的に呼び出されます。 EndEdit が呼び出されると、提案された変更は基になる DataRow の現在の行バージョンに配置され、後で DataTableDataSet、または DataRow オブジェクトの AcceptChanges メソッドまたは RejectChanges メソッドを使用してコミットまたは拒否できます。 AllowEditfalse の場合、DataView の値を変更しようとすると例外がスローされます。

既存の DataRowView が編集されている場合、基になる DataTable のイベントは、提案された変更で引き続き発生します。 基になる DataRow で EndEdit または CancelEdit を呼び出した場合、DataRowViewEndEdit または CancelEdit が呼び出されたかどうかに関係なく、保留中の変更が適用または取り消されることに注意してください。

AllowDeletetrue の場合は、DataView オブジェクトまたは DataRowView オブジェクトの Delete メソッドを使用して 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();  

こちらも参照ください