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 하나를 사용 하 여 DataColumn 및 5 DataRow 개체와 UniqueConstraint합니다.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 동일한 값으로 두 개의 행을 설정 하려면 다시 호출 됩니다.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.

BeginEdit 메서드는 사용자는 데이터 바인딩된 컨트롤의 값을 변경할 때 암시적으로 호출 됩니다 합니다 EndEdit 메서드를 호출 하면 암시적으로 호출 됩니다는 AcceptChanges 에 대 한 메서드는 DataTable 개체.The 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 메서드 호출 되지 않았습니다, 하나를 전달 하 여 원래 또는 제안 된 버전을 검색할 수 있습니다 DataRowVersion.Original 또는 DataRowVersion.Proposed 에 대 한 합니다 version 의 매개 변수는 Item[String, DataRowVersion] 속성입니다.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.

적용 대상

추가 정보