Freigeben über


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

Im Beispiel wird ein einfaches DataTable mit ein DataColumn und fünf DataRow -Objekten und ein UniqueConstrainterstellt. Ein RowChanged Ereignishandler wird auch hinzugefügt, um zu überwachen, wenn 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. Der BeginEdit wird erneut aufgerufen, um zwei Zeilen auf denselben Wert festzulegen. Wenn EndEdit aufgerufen wird, wird für UniqueConstraint 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 in den Bearbeitungsmodus zu versetzen. In diesem Modus werden Ereignisse vorübergehend angehalten, sodass der Benutzer Änderungen an mehr als einer Zeile vornehmen kann, ohne Validierungsregeln auszulösen. Wenn Sie beispielsweise sicherstellen müssen, dass der Wert der Spalte für einen Gesamtbetrag den Werten für die Debit- und Guthabenspalten in einer Zeile entspricht, können Sie jede Zeile in den Bearbeitungsmodus versetzen, um die Überprüfung der Zeilenwerte auszusetzen, bis der Benutzer versucht, die Werte zu commiten.

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 werden darstellungen DataRow der ursprünglichen und neuen vorgeschlagenen Werte gespeichert. Solange die EndEdit 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[] -Eigenschaft übergeben. Sie können alle Bearbeitungen an diesem Punkt auch abbrechen, indem Sie die CancelEdit -Methode aufrufen.

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

Hinweis

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

Gilt für:

Weitere Informationen