DataRow.BeginEdit Metode

Definisi

Memulai operasi edit pada DataRow objek.

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

Pengecualian

Metode ini dipanggil di RowChanging dalam peristiwa.

Metode ini dipanggil pada baris yang dihapus.

Contoh

Contohnya membuat sederhana DataTable dengan satu DataColumn dan lima DataRow objek, dan UniqueConstraint. Penanganan RowChanged aktivitas juga ditambahkan untuk memantau kapan nilai baris berubah. Setelah memanggil pada baris yang ada, batasan dan peristiwa untuk sementara dinonaktifkan dan nilai asli dan yang diusulkan BeginEdit dicetak. BeginEdit dipanggil lagi untuk mengatur dua baris ke nilai yang sama. Ketika EndEdit dipanggil, UniqueConstraint diberlakukan pada nilai yang identik.

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

Keterangan

BeginEdit Gunakan metode untuk memasukkan DataRow ke dalam mode edit. Dalam mode ini, peristiwa untuk sementara ditangguhkan, memungkinkan pengguna membuat perubahan pada lebih dari satu baris tanpa memicu aturan validasi. Misalnya, jika Anda harus memastikan bahwa nilai kolom untuk jumlah total sama dengan nilai untuk kolom debit dan kredit secara berturut-turut, Anda dapat menempatkan setiap baris ke dalam mode edit untuk menangguhkan validasi nilai baris hingga pengguna mencoba menerapkan nilai.

Metode BeginEdit ini dipanggil secara implisit ketika pengguna mengubah nilai kontrol terikat data; EndEdit metode ini dipanggil secara implisit ketika Anda memanggil AcceptChanges metode untuk objek.DataTable Sementara dalam mode edit ini, DataRow menyimpan representasi dari nilai asli dan baru yang diusulkan. Oleh karena itu, selama EndEdit metode belum dipanggil, Anda dapat mengambil versi asli atau yang diusulkan dengan meneruskan baik DataRowVersion.Original atau DataRowVersion.Proposed untuk version parameter Item[] properti . Anda juga dapat membatalkan pengeditan apa pun pada saat ini dengan memanggil CancelEdit metode .

Untuk melihat apakah baris berisi nilai asli atau yang diusulkan, panggil HasVersion metode .

Catatan

Metode ini BeginEdit untuk sementara menangguhkan RowChanging peristiwa, tetapi delete operasi tidak.

Berlaku untuk

Lihat juga