DataRow.BeginEdit Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.