DataRow.BeginEdit Methode

Definition

Startet einen Bearbeitungsvorgang für ein DataRow-Objekt.Starts an edit operation on a DataRow object.

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

Ausnahmen

Die Methode wurde innerhalb des RowChanging-Ereignisses aufgerufen.The method was called inside the RowChanging event.

Die Methode wurde für eine gelöschte Zeile aufgerufen.The method was called upon a deleted row.

Beispiele

Im Beispiel wird ein einfaches DataTable -Objekt DataColumn mit einem DataRow -und fünf- UniqueConstraintObjekten und einem erstellt.The example creates a simple DataTable with one DataColumn and five DataRow objects, and a UniqueConstraint. Außerdem RowChanged wird ein-Ereignishandler hinzugefügt, der überwacht werden soll, wenn der Wert der Zeile geändert wird.A RowChanged event handler is also added to monitor when the row's value is changing. Nach dem BeginEdit Aufrufen von für die vorhandenen Zeilen werden die Einschränkung und das Ereignis vorübergehend deaktiviert, und die ursprünglichen und vorgeschlagenen Werte werden gedruckt.After invoking BeginEdit on the existing rows, the constraint and event are temporarily disabled and the original and proposed values are printed. BeginEdit Wird erneut aufgerufen, um zwei Zeilen auf denselben Wert festzulegen.The BeginEdit is again invoked to set two rows to the same value. Wenn EndEdit aufgerufen wird, wird UniqueConstraint der für die identischen Werte erzwungen.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

Hinweise

Verwenden Sie BeginEdit die-Methode, DataRow um ein in den Bearbeitungsmodus zu versetzen.Use the BeginEdit method to put a DataRow into edit mode. In diesem Modus werden Ereignisse vorübergehend angehalten, sodass der Benutzer Änderungen an mehr als einer Zeile vornehmen kann, ohne Validierungsregeln auszulösen.In this mode, events are temporarily suspended, letting the user make changes to more than one row without triggering validation rules. Wenn Sie z. b. sicherstellen müssen, dass der Wert der-Spalte für einen Gesamtbetrag gleich den Werten für die Spalten "Debit" und "Credit" in einer Zeile ist, können Sie jede Zeile in den Bearbeitungsmodus versetzen, um die Überprüfung der Zeilen Werte anzuhalten, bis der Benutzer versucht, die Werte zu committen.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.

Die BeginEdit -Methode wird implizit aufgerufen, wenn der Benutzer den Wert eines Daten gebundenen Steuer Elements ändert. EndEdit die-Methode wird implizit aufgerufen, wenn AcceptChanges Sie die- DataTable Methode für das-Objekt aufrufen.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. In diesem Bearbeitungsmodus speichert die DataRow Darstellungen der ursprünglichen und neuen vorgeschlagenen Werte.While in this edit mode, the DataRow stores representations of the original and new proposed values. Solange EndEdit die-Methode nicht aufgerufen wurde, können Sie daher entweder die ursprüngliche oder die vorgeschlagene Version abrufen, indem Sie entweder DataRowVersion.Original oder DataRowVersion.Proposed für den version -Parameter der Item[String, DataRowVersion] -Eigenschaft übergeben.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. Sie können zu diesem Zeitpunkt auch alle bearbeitbaren Änderungen abbrechen, CancelEdit indem Sie die-Methode aufrufen.You can also cancel any edits at this point by invoking the CancelEdit method.

Um festzustellen, ob die Zeile einen ursprünglichen oder vorgeschlagenen Wert enthält, HasVersion müssen Sie die-Methode aufzurufen.To see if the row contains an original or proposed value, call the HasVersion method.

Hinweis

Die BeginEdit -Methode hält RowChanging Ereignisse vorübergehend an, der delete -Vorgang jedoch nicht.The BeginEdit method temporarily suspends RowChanging events, but the delete operation does not.

Gilt für:

Siehe auch