Freigeben über


DataRow.BeginEdit-Methode

Startet einen Bearbeitungsvorgang für ein DataRow-Objekt.

Namespace: System.Data
Assembly: System.Data (in system.data.dll)

Syntax

'Declaration
Public Sub BeginEdit
'Usage
Dim instance As DataRow

instance.BeginEdit
public void BeginEdit ()
public:
void BeginEdit ()
public void BeginEdit ()
public function BeginEdit ()

Ausnahmen

Ausnahmetyp Bedingung

InRowChangingEventException

Die Methode wurde innerhalb des RowChanging-Ereignisses aufgerufen.

DeletedRowInaccessibleException

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

Hinweise

Versetzen Sie eine DataRow mit der BeginEdit-Methode in den Bearbeitungsmodus. In diesem Modus werden Ereignisse vorübergehend unterbrochen, sodass der Benutzer mehrere Änderungen an einer Reihe von Zeilen vornehmen kann, ohne dass dabei Validierungsregeln ausgelöst werden. Wenn Sie z. B. sicherstellen müssen, dass der Wert der Spalte für einen Gesamtbetrag den Werten der Spalten Soll und Haben in einer Zeile entspricht, können Sie jede Zeile in den Bearbeitungsmodus versetzen und so die Validierung der Zeilenwerte unterbrechen, bis der Benutzer einen Commit für die Werte ausführt.

Die BeginEdit-Methode wird implizit aufgerufen, wenn der Benutzer den Wert eines datengebundenen Steuerelements ändert. Die EndEdit-Methode wird implizit aufgerufen, wenn die AcceptChanges-Methode für das DataTable-Objekt aufgerufen wird. Im Bearbeitungsmodus speichert die DataRow Darstellungen der ursprünglichen und neu vorgeschlagenen Werte. Solange die EndEdit-Methode nicht aufgerufen wurde, können Sie daher die ursprüngliche oder die vorgeschlagene Version abrufen, indem Sie DataRowVersion.Original oder DataRowVersion.Proposed für den version-Parameter der Item-Eigenschaft übergeben. Sie können an dieser Stelle auch alle Bearbeitungsvorgänge abbrechen, indem Sie die CancelEdit-Methode aufrufen.

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

Beispiel

Im Beispiel wird eine einfache DataTable mit einer DataColumn und fünf DataRow-Objekten sowie einer UniqueConstraint erstellt. Außerdem wird ein Handler für das RowChanged-Ereignis hinzugefügt, um zu überwachen, wann der Wert der Zeile geändert wird. Nach dem Aufruf von BeginEdit für die vorhandenen Zeilen werden die Einschränkung und das Ereignis vorübergehend deaktiviert, und die ursprünglichen und die vorgeschlagenen Werte werden ausgegeben. BeginEdit wird erneut aufgerufen, um zwei Zeilen auf denselben Wert festzulegen. Beim Aufruf von EndEdit wird die UniqueConstraint für die identischen Werte erzwungen.

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
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]);
}

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

DataRow-Klasse
DataRow-Member
System.Data-Namespace
AcceptChanges
CancelEdit
EndEdit
HasVersion
Item
RowState