DataRow.BeginEdit Yöntem

Tanım

Bir nesne üzerinde düzenleme işlemi başlatır DataRow .Starts an edit operation on a DataRow object.

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

Özel durumlar

Yöntem olay içinde çağrıldı RowChanging .The method was called inside the RowChanging event.

Yöntemi silinen bir satır üzerine çağırılır.The method was called upon a deleted row.

Örnekler

Örnek DataTable DataColumn , bir ve beş nesne ile basit bir DataRow ve bir oluşturur UniqueConstraint .The example creates a simple DataTable with one DataColumn and five DataRow objects, and a UniqueConstraint. Bir RowChanged olay işleyicisi, satır değeri değiştirilirken izlemeye de eklenir.A RowChanged event handler is also added to monitor when the row's value is changing. BeginEditMevcut satırları gerçekleştirdikten sonra kısıtlama ve olay geçici olarak devre dışıdır ve özgün ve önerilen değerler yazdırılır.After invoking BeginEdit on the existing rows, the constraint and event are temporarily disabled and the original and proposed values are printed. BeginEditAynı değere iki satır ayarlamak için yeniden çağrılır.The BeginEdit is again invoked to set two rows to the same value. EndEditÇağrıldığında, UniqueConstraint aynı değerler üzerinde zorlanır.When EndEdit is called, the UniqueConstraint is enforced on the identical values.

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

Açıklamalar

BeginEditBir düzenleme moduna koymak için yöntemini kullanın DataRow .Use the BeginEdit method to put a DataRow into edit mode. Bu modda, olaylar geçici olarak askıya alınır ve kullanıcının doğrulama kurallarını tetiklemeden birden fazla satırda değişiklik yapmasına izin verir.In this mode, events are temporarily suspended, letting the user make changes to more than one row without triggering validation rules. Örneğin, bir toplam miktar sütununun değerinin bir satırdaki borç ve kredi sütunlarının değerlerine eşit olduğundan emin olmanız gerekiyorsa, her satırı düzenleme moduna koyarak, Kullanıcı değerleri işlemeye çalışır hale gelene kadar satır değerlerinin doğrulanmasını askıya alabilirsiniz.For example, if you must make sure that the value of the column for a total amount is equal to the values for the debit and credit columns in a row, you can put each row into edit mode to suspend the validation of the row values until the user tries to commit the values.

BeginEditKullanıcı veri bağlantılı bir denetimin değerini değiştirdiğinde yöntemi örtük olarak çağrılır; EndEdit AcceptChanges nesne için yöntemini çağırdığınızda yöntem örtük olarak çağrılır DataTable .The BeginEdit method is called implicitly when the user changes the value of a data-bound control; the EndEdit method is called implicitly when you invoke the AcceptChanges method for the DataTable object. Bu düzenleme modundayken, DataRow orijinal ve yeni önerilen değerlerin temsillerini depolar.While in this edit mode, the DataRow stores representations of the original and new proposed values. Bu nedenle, EndEdit yöntemi çağrılmayan sürece, ya da DataRowVersion.Original DataRowVersion.Proposed version özelliğinin parametresine geçirerek orijinal veya önerilen sürümü alabilirsiniz Item[] .Therefore, as long as the EndEdit method has not been called, you can retrieve either the original or proposed version by passing either DataRowVersion.Original or DataRowVersion.Proposed for the version parameter of the Item[] property. Ayrıca, yöntemini çağırarak bu noktada tüm düzenlemeleri iptal edebilirsiniz CancelEdit .You can also cancel any edits at this point by invoking the CancelEdit method.

Satırda orijinal veya önerilen bir değer olup olmadığını görmek için HasVersion yöntemini çağırın.To see if the row contains an original or proposed value, call the HasVersion method.

Not

BeginEditYöntem olayları geçici olarak askıya alır RowChanging , ancak delete işlem yapmaz.The BeginEdit method temporarily suspends RowChanging events, but the delete operation does not.

Şunlara uygulanır

Ayrıca bkz.