DataRow.BeginEdit メソッド

定義

DataRow オブジェクトの編集操作を開始します。Starts an edit operation on a DataRow object.

public:
 void BeginEdit();
public void BeginEdit ();
member this.BeginEdit : unit -> unit
Public Sub BeginEdit ()

例外

RowChanging イベント内でメソッドが呼び出されました。The method was called inside the RowChanging event.

このメソッドは削除した行に対して呼び出されました。The method was called upon a deleted row.

この例では、 DataTable 1 DataColumn ~ UniqueConstraint5 個DataRowのオブジェクトとを持つ単純なを作成します。The example creates a simple DataTable with one DataColumn and five DataRow objects, and a UniqueConstraint. RowChangedイベントハンドラーは、行の値が変更されたときに監視するためにも追加されます。A RowChanged event handler is also added to monitor when the row's value is changing. 既存のBeginEdit行に対してを呼び出すと、制約とイベントが一時的に無効になり、元の値と提案された値が出力されます。After invoking BeginEdit on the existing rows, the constraint and event are temporarily disabled and the original and proposed values are printed. BeginEdit再度呼び出して、2つの行を同じ値に設定します。The BeginEdit is again invoked to set two rows to the same value. EndEdit 呼び出さUniqueConstraintれると、は同一の値に適用されます。When EndEdit is called, the UniqueConstraint is enforced on the identical values.

   private void DemonstrateRowBeginEdit()
   {
       DataTable table = new DataTable("table1");
       DataColumn column = new 
           DataColumn("col1",Type.GetType("System.Int32"));
       table.RowChanged+=new 
           DataRowChangeEventHandler(Row_Changed);
       table.Columns.Add(column);

       // Add a UniqueConstraint to the table.
       table.Constraints.Add(new UniqueConstraint(column));

       // Add five rows.
       DataRow newRow;
      
       for(int i = 0;i<5; i++)
       {
           // RowChanged event will occur for every addition.
           newRow= table.NewRow();
           newRow[0]= i;
           table.Rows.Add(newRow);
       }
       // AcceptChanges.
       table.AcceptChanges();

       // Invoke BeginEdit on each.
       Console.WriteLine(
           "\n Begin Edit and print original and proposed values \n");
       foreach(DataRow row in table.Rows)
       {
      
           row.BeginEdit();
           row[0]=(int) row[0]+10;
           Console.Write("\table Original \table" + 
               row[0, DataRowVersion.Original]);
           Console.Write("\table Proposed \table" + 
               row[0,DataRowVersion.Proposed] + "\n");
       }
       Console.WriteLine("\n");
       // Accept changes
       table.AcceptChanges();
       // Change two rows to identical values after invoking BeginEdit.
       table.Rows[0].BeginEdit();
       table.Rows[1].BeginEdit();
       table.Rows[0][0]= 100;
       table.Rows[1][0]=100;
       try
       {
           /* Now invoke EndEdit. This will cause the UniqueConstraint
              to be enforced.*/
           table.Rows[0].EndEdit();
           table.Rows[1].EndEdit();
       }
       catch(Exception e)
       {
           // Process exception and return.
           Console.WriteLine("Exception of type {0} occurred.", 
               e.GetType());
       }
   }

   private void Row_Changed(object sender, 
       System.Data.DataRowChangeEventArgs e)
   {
       DataTable table = (DataTable)  sender;
       Console.WriteLine("RowChanged " + e.Action.ToString() 
           + "\table" + e.Row.ItemArray[0]);
   }
Private Sub DemonstrateRowBeginEdit()
    Dim table As New DataTable("table1")
    Dim column As New DataColumn("col1", Type.GetType("System.Int32"))
    AddHandler table.RowChanged, AddressOf Row_Changed
    table.Columns.Add(column)

    ' Add a UniqueConstraint to the table.
    table.Constraints.Add(New UniqueConstraint(column))

    ' Add five rows.
    Dim newRow As DataRow
       
    Dim i As Integer
    For i = 0 To 4
        ' RowChanged event will occur for every addition.
        newRow = table.NewRow()
        newRow(0) = i
        table.Rows.Add(newRow)
    Next i

    ' AcceptChanges.
    table.AcceptChanges()

    ' Invoke BeginEdit on each.
    Console.WriteLine(ControlChars.Cr _
       & " Begin Edit and print original and proposed values " _
       & ControlChars.Cr)
    Dim row As DataRow
    For Each row In  table.Rows           
        row.BeginEdit()
        row(0) = CInt(row(0)) & 10
        Console.Write(ControlChars.Tab & " Original " & ControlChars.Tab _
           & row(0, DataRowVersion.Original).ToString())
        Console.Write(ControlChars.Tab & " Proposed " & ControlChars.Tab _
           & row(0, DataRowVersion.Proposed).ToString() & ControlChars.Cr)
    Next row
    Console.WriteLine(ControlChars.Cr)

    ' Accept changes
    table.AcceptChanges()

    ' Change two rows to identical values after invoking BeginEdit.
    table.Rows(0).BeginEdit()
    table.Rows(1).BeginEdit()
    table.Rows(0)(0) = 100
    table.Rows(1)(0) = 100
    Try
        ' Now invoke EndEdit. This will cause the UniqueConstraint
        ' to be enforced.
        table.Rows(0).EndEdit()
        table.Rows(1).EndEdit()
    Catch e As Exception
    ' Process exception and return.
        Console.WriteLine("Exception of type {0} occurred.", _
           e.GetType().ToString())
    End Try
End Sub

Private Sub Row_Changed _
(sender As Object, e As System.Data.DataRowChangeEventArgs)
    Dim table As DataTable = CType(sender, DataTable)
    Console.WriteLine("RowChanged " & e.Action.ToString() _
       & ControlChars.Tab & e.Row.ItemArray(0).ToString())
End Sub

注釈

メソッドをBeginEdit使用して、 DataRowを編集モードにします。Use the BeginEdit method to put a DataRow into edit mode. このモードでは、イベントは一時的に中断され、ユーザーは検証ルールをトリガーせずに複数の行に変更を加えることができます。In this mode, events are temporarily suspended, letting the user make changes to more than one row without triggering validation rules. たとえば、合計金額の列の値が、行の借方列およびクレジット列の値と同じであることを確認する必要がある場合は、各行を編集モードにして、ユーザーが値のコミットを試行するまで行の値の検証を中断することができます。For example, if you must make sure that the value of the column for a total amount is equal to the values for the debit and credit columns in a row, you can put each row into edit mode to suspend the validation of the row values until the user tries to commit the values.

メソッドは、ユーザーがデータバインドコントロールの値を変更したときに暗黙的に呼び出さEndEditれます。このメソッドは、 DataTableオブジェクトAcceptChangesのメソッドを呼び出すときに暗黙的に呼び出されます。 BeginEditThe BeginEdit method is called implicitly when the user changes the value of a data-bound control; the EndEdit method is called implicitly when you invoke the AcceptChanges method for the DataTable object. この編集モードでは、はDataRow元の値と新しい提案された値の表現を格納します。While in this edit mode, the DataRow stores representations of the original and new proposed values. したがって、 EndEditメソッドが呼び出されていない限りItem[String, DataRowVersion] 、プロパティのversionパラメーターにDataRowVersion.OriginalまたはDataRowVersion.Proposedを渡すことによって、元のバージョンまたは提案されたバージョンのいずれかを取得できます。Therefore, as long as the EndEdit method has not been called, you can retrieve either the original or proposed version by passing either DataRowVersion.Original or DataRowVersion.Proposed for the version parameter of the Item[String, DataRowVersion] property. メソッドをCancelEdit呼び出して、この時点で編集をキャンセルすることもできます。You can also cancel any edits at this point by invoking the CancelEdit method.

行に元の値または提案された値が含まHasVersionれているかどうかを確認するには、メソッドを呼び出します。To see if the row contains an original or proposed value, call the HasVersion method.

注意

メソッドBeginEditは、イベントRowChangingを一時的に中断deleteしますが、操作は中断しません。The BeginEdit method temporarily suspends RowChanging events, but the delete operation does not.

適用対象

こちらもご覧ください