Bagikan melalui


Informasi Kesalahan Baris

Untuk menghindari harus merespons kesalahan baris saat mengedit nilai dalam DataTable, Anda dapat menambahkan informasi kesalahan ke baris untuk digunakan nanti. Objek DataRow menyediakan properti RowError pada setiap baris untuk tujuan ini. Menambahkan data ke properti RowError dari DataRow mengatur properti HasErrors dari DataRow ke true. Jika DataRow adalah bagian dari DataTable, dan DataRow.HasErrorsbenar, properti DataTable.HasErrors juga benar. Ini juga berlaku untuk Himpunan Data tempat DataTable berada. Saat menguji kesalahan, Anda dapat memeriksa properti HasErrors untuk menentukan apakah informasi kesalahan telah ditambahkan ke baris mana pun. Jika HasErrorsbenar, Anda dapat menggunakan metode GetErrors dari DataTable untuk mengembalikan dan memeriksa hanya baris dengan kesalahan saja, seperti yang ditunjukkan pada contoh berikut.

Dim workTable As DataTable = New DataTable("Customers")  
workTable.Columns.Add("CustID", Type.GetType("System.Int32"))  
workTable.Columns.Add("Total", Type.GetType("System.Double"))  
  
AddHandler workTable.RowChanged, New DataRowChangeEventHandler(AddressOf OnRowChanged)  
  
Dim i  As Int32  
  
For i  = 0 To 10  
  workTable.Rows.Add(New Object() {i , i *100})  
Next  
  
If workTable.HasErrors Then  
  Console.WriteLine("Errors in Table " & workTable.TableName)  
  
  Dim myRow As DataRow  
  
  For Each myRow In workTable.GetErrors()  
    Console.WriteLine("CustID = " & myRow("CustID").ToString())  
    Console.WriteLine(" Error = " & myRow.RowError & vbCrLf)  
  Next  
End If  
  
Private Shared Sub OnRowChanged( _  
    sender As Object, args As DataRowChangeEventArgs)  
  ' Check for zero values.  
  If CDbl(args.Row("Total")) = 0 Then args.Row.RowError = _  
      "Total cannot be 0."  
End Sub  
DataTable  workTable = new DataTable("Customers");  
workTable.Columns.Add("CustID", typeof(Int32));  
workTable.Columns.Add("Total", typeof(Double));  
  
workTable.RowChanged += new DataRowChangeEventHandler(OnRowChanged);  
  
for (int i = 0; i < 10; i++)  
  workTable.Rows.Add(new Object[] {i, i*100});  
  
if (workTable.HasErrors)  
{  
  Console.WriteLine("Errors in Table " + workTable.TableName);  
  
  foreach (DataRow myRow in workTable.GetErrors())  
  {  
    Console.WriteLine("CustID = " + myRow["CustID"]);  
    Console.WriteLine(" Error = " + myRow.RowError + "\n");  
  }  
}  
  
protected static void OnRowChanged(  
    Object sender, DataRowChangeEventArgs args)  
{  
  // Check for zero values.  
  if (args.Row["Total"].Equals(0D))  
    args.Row.RowError = "Total cannot be 0.";  
}  

Lihat juga