DataRow.BeginEdit Methode

Definition

Startet einen Bearbeitungsvorgang für ein DataRow Objekt.

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

Ausnahmen

Die Methode wurde innerhalb des RowChanging Ereignisses aufgerufen.

Die Methode wurde für eine gelöschte Zeile aufgerufen.

Beispiele

Das Beispiel erstellt ein einfaches DataTable Objekt mit einem DataColumn und fünf DataRow Objekten und einem UniqueConstraint. Ein RowChanged Ereignishandler wird auch hinzugefügt, um zu überwachen, wann sich der Wert der Zeile ändert. Nach dem Aufrufen BeginEdit der vorhandenen Zeilen werden die Einschränkung und das Ereignis vorübergehend deaktiviert, und die ursprünglichen und vorgeschlagenen Werte werden gedruckt. Es BeginEdit wird erneut aufgerufen, um zwei Zeilen auf denselben Wert festzulegen. Wenn EndEdit sie aufgerufen wird, wird dies UniqueConstraint für die identischen Werte erzwungen.

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 die BeginEdit Methode, um einen DataRow Bearbeitungsmodus einzufügen. In diesem Modus werden Ereignisse vorübergehend angehalten, sodass der Benutzer Änderungen an mehr als einer Zeile vornehmen kann, ohne Gültigkeitsprüfungsregeln auszulösen. Wenn Sie beispielsweise sicherstellen müssen, dass der Wert der Spalte für einen Gesamtbetrag den Werten für die Lastschrift- und Kreditspalten in einer Zeile entspricht, können Sie jede Zeile in den Bearbeitungsmodus versetzen, um die Überprüfung der Zeilenwerte anzuhalten, bis der Benutzer versucht, die Werte zu übernehmen.

Die BeginEdit Methode wird implizit aufgerufen, wenn der Benutzer den Wert eines datengebundenen Steuerelements ändert. Die EndEdit Methode wird implizit aufgerufen, wenn Sie die AcceptChanges Methode für das DataTable Objekt aufrufen. In diesem Bearbeitungsmodus speichert die DataRow Darstellung der ursprünglichen und neuen vorgeschlagenen Werte. Solange die EndEdit Methode nicht aufgerufen wurde, können Sie daher entweder die ursprüngliche oder vorgeschlagene Version abrufen, indem Sie entweder eine DataRowVersion.Original oder DataRowVersion.Proposed für den version Parameter der Item[] Eigenschaft übergeben. Sie können an diesem Punkt auch alle Bearbeitungen abbrechen, indem Sie die CancelEdit Methode aufrufen.

Um festzustellen, ob die Zeile einen ursprünglichen oder vorgeschlagenen Wert enthält, rufen Sie die HasVersion Methode auf.

Note

Die BeginEdit Methode hält vorübergehend Ereignisse an RowChanging , der delete Vorgang jedoch nicht.

Gilt für:

Weitere Informationen