基本操作: 创建一个具有一个列和五个行的 DataTable。创建两个 DataView 对象,并针对每个对象设置 RowStateFilter 以显示表数据的不同视图。然后打印这些值。
Private Sub DemonstrateDataView() ’ Create one DataTable with one column. Dim myTable As DataTable = New DataTable("myTable") Dim colItem As DataColumn = New DataColumn("item", Type.GetType("System.String")) myTable.Columns.Add(colItem) ’ Add five items. Dim NewRow As DataRow Dim i As Integer For i = 0 To 4 NewRow = myTable.NewRow() NewRow("item") = "Item " & i myTable.Rows.Add(NewRow) Next myTable.AcceptChanges() ’ Create two DataView objects with the same table. Dim firstView As DataView = New DataView(myTable) Dim secondView As DataView = New DataView(myTable) ’ Change the values in the table. myTable.Rows(0)("item") = "cat" myTable.Rows(1)("item") = "dog" ’ Print current table values. PrintTableOrView(myTable, "Current Values in Table") ’ Set first DataView to show only modified versions of original rows. firstView.RowStateFilter = DataViewRowState.ModifiedOriginal ’ Print values. PrintTableOrView(firstView, "First DataView: ModifiedOriginal") ’ Add one New row to the second view. Dim myDataRowView As DataRowView myDataRowView = secondView.AddNew() myDataRowView("item") = "fish" ’ Set second DataView to show modified versions of current rows, or New rows. secondView.RowStateFilter = DataViewRowState.ModifiedCurrent Or DataViewRowState.Added ’ Print modified and Added rows. PrintTableOrView(secondView, "Second DataView: ModifiedCurrent or Added") End Sub Overloads Private Sub PrintTableOrView(ByVal dv As DataView, ByVal label As String) Console.WriteLine(label) Dim i As Integer For i = 0 To dv.count - 1 Console.WriteLine(dv(i)("item")) Next Console.WriteLine() End Sub Overloads Private Sub PrintTableOrView(ByVal t As DataTable, ByVal label As String) Console.WriteLine(label) Dim i As Integer For i = 0 To t.Rows.Count - 1 Console.WriteLine(t.Rows(i)("item")) Next Console.WriteLine() End Sub
缓存 DataSet, 操作时使用 DataView 对数据进行筛选:
Private Sub MakeDataView() Dim dv As DataView dv = New DataView With dv .Table = DataSet1.Tables("Suppliers") .AllowDelete = True .AllowEdit = True .AllowNew = True .RowFilter = "City = ’Berlin’" .RowStateFilter = DataViewRowState.ModifiedCurrent .Sort = "CompanyName DESC" End With ’ Simple bind to a TextBox control Text1.DataBindings.Add("Text", dv, "CompanyName") End Sub