DataRow.BeginEdit Metod

Definition

Startar en redigeringsåtgärd på ett DataRow objekt.

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

Undantag

Metoden anropades i RowChanging händelsen.

Metoden anropades på en borttagen rad.

Exempel

Exemplet skapar ett enkelt DataTable med ett DataColumn och fem DataRow objekt och ett UniqueConstraint. En RowChanged händelsehanterare läggs också till för att övervaka när radens värde ändras. När du har anropat BeginEdit på de befintliga raderna inaktiveras villkoret och händelsen tillfälligt och de ursprungliga och föreslagna värdena skrivs ut. BeginEdit Anropas igen för att ange två rader till samma värde. När EndEdit anropas UniqueConstraint tillämpas den på identiska värden.

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

Kommentarer

BeginEdit Använd metoden för att placera en DataRow i redigeringsläge. I det här läget pausas händelser tillfälligt, så att användaren kan göra ändringar i mer än en rad utan att utlösa verifieringsregler. Om du till exempel måste se till att värdet för kolumnen för ett totalt belopp är lika med värdena för debet- och kreditkolumnerna i en rad, kan du placera varje rad i redigeringsläge för att pausa valideringen av radvärdena tills användaren försöker checka in värdena.

Metoden BeginEdit anropas implicit när användaren ändrar värdet för en databunden kontroll. EndEdit Metoden anropas implicit när du anropar AcceptChanges -metoden för DataTable objektet. I det här redigeringsläget DataRow lagrar representationerna av de ursprungliga och nya föreslagna värdena. Så länge EndEdit metoden inte har anropats kan du därför hämta antingen den ursprungliga eller föreslagna versionen genom att skicka antingen DataRowVersion.Original eller DataRowVersion.Proposed för parametern versionItem[] för egenskapen. Du kan också avbryta alla ändringar i det här läget genom att CancelEdit anropa metoden.

Om du vill se om raden innehåller ett ursprungligt eller föreslaget värde anropar HasVersion du metoden.

Note

Metoden BeginEdit pausar RowChanging tillfälligt händelser, men åtgärden delete gör det inte.

Gäller för

Se även