[Visual Basic] Dim myCol As DataColumn Dim myRow As DataRow
Dim currRows() As DataRow = workTable.Select(Nothing, Nothing, DataViewRowState.CurrentRows)
If (currRows.Length < 1 ) Then Console.WriteLine("No Current Rows Found") Else For Each myCol in workTable.Columns Console.Write(vbTab & myCol.ColumnName) Next
Console.WriteLine(vbTab & "RowState")
For Each myRow In currRows For Each myCol In workTable.Columns Console.Write(vbTab & myRow(myCol).ToString()) Next
Dim rowState As String = System.Enum.GetName(myRow.RowState.GetType(), myRow.RowState) Console.WriteLine(vbTab & rowState) Next End If
Private Shared Sub OnColumnChanged(sender As Object, args As DataColumnChangeEventArgs) If args.Column.ColumnName = "LastName" Then If args.ProposedValue.ToString() = "" Then Console.WriteLine("Last Name cannot be blank. Edit canceled.") args.Row.CancelEdit() End If End If End Sub
[C#] DataTable workTable = new DataTable(); workTable.Columns.Add("LastName", typeof(String));
workTable.ColumnChanged += new DataColumnChangeEventHandler(OnColumnChanged);
例如,以下代码示例显示了表中所有已删除行的值。已删除的行没有 Current 行版本,因此在访问列值时必须传递 DataRowVersion.Original。
[Visual Basic] Dim catTable As DataTable = catDS.Tables("Categories")
Dim delRows() As DataRow = catTable.Select(Nothing, Nothing, DataViewRowState.Deleted)
Console.WriteLine("Deleted rows:" & vbCrLf)
Dim catCol As DataColumn Dim delRow As DataRow
For Each catCol In catTable.Columns Console.Write(catCol.ColumnName & vbTab) Next Console.WriteLine()
For Each delRow In delRows For Each catCol In catTable.Columns Console.Write(delRow(catCol, DataRowVersion.Original) & vbTab) Next Console.WriteLine() Next
[Visual Basic] 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
[C#] 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);
[Visual Basic] If workTable.HasErrors Then Dim errRow As DataRow
For Each errRow in workTable.GetErrors()
If errRow.RowError = "Total cannot exceed 1000." Then errRow("Total") = 1000 errRow.RowError = "" ' Clear the error. Else errRow.RejectChanges() End If Next End If
workTable.AcceptChanges()
[C#] if (workTable.HasErrors) {
foreach (DataRow errRow in workTable.GetErrors()) { if (errRow.RowError == "Total cannot exceed 1000.") { errRow["Total"] = 1000; errRow.RowError = ""; // Clear the error. } else errRow.RejectChanges(); } }
[Visual Basic] AddHandler workTable.ColumnChanged, New DataColumnChangeEventHandler(AddressOf OnColumnChanged) AddHandler workTable.ColumnChanging, New DataColumnChangeEventHandler(AddressOf OnColumnChanging) AddHandler workTable.RowChanged, New DataRowChangeEventHandler(AddressOf OnRowChanged) AddHandler workTable.RowChanging, New DataRowChangeEventHandler(AddressOf OnRowChanging)
Private Shared Sub OnColumnChanged(sender As Object, args As DataColumnChangeEventargs) Console.Write(" ColumnChanged: ") Console.Write(args.Column.ColumnName & " changed to '" & args.ProposedValue.ToString() & "'" & vbCrLf) End Sub
Private Shared Sub OnColumnChanging(sender As Object, args As DataColumnChangeEventargs) Console.Write("ColumnChanging: ") Console.Write(args.Column.ColumnName & " equals '" & args.Row(args.Column).ToString() & _ "', changing to '" & args.ProposedValue.ToString() & "'" & vbCrLf) End Sub
Private Shared Sub OnRowChanging(sender As Object, args As DataRowChangeEventargs) If args.Action <> DataRowAction.Nothing Then Dim actionStr As String actionStr = System.Enum.GetName(args.Action.GetType(), args.Action)
Console.WriteLine(" RowChanging: Action = " & actionStr & ", CustID = " & args.Row("CustID").ToString()) End If End Sub
Private Shared Sub OnRowChanged(sender As Object, args As DataRowChangeEventargs) If args.Action <> DataRowAction.Nothing Then Dim actionStr As String actionStr = System.Enum.GetName(args.Action.GetType(), args.Action)
Console.WriteLine(" RowChanged: Action = " & actionStr & ", CustID = " & args.Row("CustID").ToString()) End If End Sub
[C#] workTable.ColumnChanged += new DataColumnChangeEventHandler(OnColumnChanged); workTable.ColumnChanging += new DataColumnChangeEventHandler(OnColumnChanging); workTable.RowChanged += new DataRowChangeEventHandler(OnRowChanged); workTable.RowChanging += new DataRowChangeEventHandler(OnRowChanging);