Aracılığıyla paylaş


DataRow.BeginEdit Yöntem

Tanım

Nesne DataRow üzerinde düzenleme işlemi başlatır.

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

Özel durumlar

yöntemi olayın içinde RowChanging çağrıldı.

yöntemi silinen bir satırda çağrıldı.

Örnekler

Örnek, bir DataColumn ve beş DataRow nesne ve bir ile basit DataTable bir UniqueConstraintoluşturur. RowChanged Satırın değeri değiştiğinde izlemek için bir olay işleyicisi de eklenir. Mevcut satırlarda çağrıldıktan BeginEdit sonra kısıtlama ve olay geçici olarak devre dışı bırakılır ve özgün ve önerilen değerler yazdırılır. BeginEdit iki satırı aynı değere ayarlamak için yeniden çağrılır. çağrıldığında EndEdit , UniqueConstraint aynı değerler üzerinde zorlanır.

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

BeginEdit Düzenleme moduna almak için DataRow yöntemini kullanın. 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 verilir. Örneğin, toplam tutar için sütunun değerinin bir satırdaki borç ve alacak sütunlarının değerlerine eşit olduğundan emin olmanız gerekiyorsa, kullanıcı değerleri işlemeye çalışana kadar satır değerlerinin doğrulanmasını askıya almak için her satırı düzenleme moduna alabilirsiniz.

BeginEdit Kullanıcı veriye bağlı denetimin değerini değiştirdiğinde yöntemi örtük olarak çağrılır; EndEdit nesne için DataTable yöntemini çağırdığınızda AcceptChanges yöntem örtük olarak çağrılır. Bu düzenleme modundayken, DataRow özgün ve yeni önerilen değerlerin gösterimlerini depolar. Bu nedenle, yöntem çağrılmadığı süreceEndEdit, özelliğin parametresi Item[] için version veya geçirerek DataRowVersion.Original özgün veya DataRowVersion.Proposed önerilen sürümü alabilirsiniz. Ayrıca bu noktada yöntemini çağırarak CancelEdit tüm düzenlemeleri iptal edebilirsiniz.

Satırın özgün veya önerilen bir değer içerdiğini görmek için yöntemini çağırın HasVersion .

Not

BeginEdit yöntemi olayları geçici olarak askıya alırRowChanging, ancak delete işlem askıya almaz.

Şunlara uygulanır

Ayrıca bkz.