DataRow.BeginEdit Metoda

Definicja

Uruchamia operację edycji obiektu DataRow .

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

Wyjątki

Metoda została wywołana wewnątrz RowChanging zdarzenia.

Metoda została wywołana przy usuniętym wierszu.

Przykłady

W przykładzie tworzony jest prosty DataTable obiekt z jednym DataColumn i pięcioma DataRow obiektami oraz obiektem UniqueConstraint. Program RowChanged obsługi zdarzeń jest również dodawany do monitorowania, gdy wartość wiersza się zmienia. Po wywołaniu BeginEdit istniejących wierszy ograniczenie i zdarzenie są tymczasowo wyłączone, a oryginalne i proponowane wartości zostaną wydrukowane. Element BeginEdit jest ponownie wywoływany, aby ustawić dwa wiersze na tę samą wartość. Gdy EndEdit element jest wywoływany, UniqueConstraint element jest wymuszany na identycznych wartościach.

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

Uwagi

BeginEdit Użyj metody , aby wprowadzić DataRow tryb edycji. W tym trybie zdarzenia są tymczasowo zawieszone, co pozwala użytkownikowi wprowadzać zmiany w więcej niż jednym wierszu bez wyzwalania reguł walidacji. Jeśli na przykład musisz się upewnić, że wartość kolumny dla łącznej kwoty jest równa wartościom kolumn debetowych i kredytowych w wierszu, możesz umieścić każdy wiersz w trybie edycji, aby zawiesić walidację wartości wierszy, dopóki użytkownik nie spróbuje zatwierdzić wartości.

Metoda BeginEdit jest wywoływana niejawnie, gdy użytkownik zmienia wartość kontrolki powiązanej z danymi. EndEdit Metoda jest wywoływana niejawnie podczas wywoływania AcceptChanges metody dla DataTable obiektu. W tym trybie DataRow edycji są przechowywane reprezentacje oryginalnych i nowych proponowanych wartości. W związku z tym, o ile EndEdit metoda nie została wywołana, można pobrać oryginalną lub proponowaną wersję, przekazując parametr DataRowVersion.Original lub DataRowVersion.Proposed dla version parametru Item[] właściwości. Możesz również anulować wszelkie zmiany w tym momencie, wywołując metodę CancelEdit .

Aby sprawdzić, czy wiersz zawiera oryginalną lub proponowaną wartość, wywołaj metodę HasVersion .

Uwaga

Metoda BeginEdit tymczasowo zawiesza RowChanging zdarzenia, ale operacja nie jest wykonywana delete .

Dotyczy

Zobacz też