Zarządzanie elementami DataView
Możesz użyć elementu , DataViewManager aby zarządzać ustawieniami widoku dla wszystkich tabel w obiekcie DataView. Jeśli masz kontrolkę, którą chcesz powiązać z wieloma tabelami, taką jak siatka, która nawiguje po relacjach, model DataViewManager jest idealny.
Element DataViewManager zawiera kolekcję DataViewSetting obiektów, które są używane do ustawiania ustawienia widoku tabel w obiekcie DataSet. Obiekt DataViewSettingCollection zawiera jeden DataViewSetting obiekt dla każdej tabeli w zestawie danych. Można ustawić domyślne właściwości ApplyDefaultSort, Sort, RowFilter i RowStateFilter tabeli przywoływaną przy użyciu elementu DataViewSetting. Można odwołać się do elementu DataViewSetting dla określonej tabeli według nazwy lub odwołania porządkowego lub przekazując odwołanie do tego określonego obiektu tabeli. Dostęp do kolekcji obiektów DataViewSetting można uzyskać w obiekcie DataViewManager przy użyciu właściwości DataView Ustawienia.
Poniższy przykład kodu wypełnia zestaw danych tabelami bazy danych SQL Server Northwind Customers, Orders i Order Details, tworzy relacje między tabelami, używa elementu DataViewManager do ustawiania domyślnych ustawień elementu DataView i wiąże element DataGrid z kontrolką DataViewManager. W przykładzie ustawiono domyślne ustawienia elementu DataView dla wszystkich tabel w zestawie danych w celu sortowania według klucza podstawowego tabeli (ApplyDefaultSort = true), a następnie modyfikuje kolejność sortowania tabeli Customers w celu sortowania według nazwy firmy.
' Assumes connection is a valid SqlConnection to Northwind.
' Create a Connection, DataAdapters, and a DataSet.
Dim custDA As SqlDataAdapter = New SqlDataAdapter( _
"SELECT CustomerID, CompanyName FROM Customers", connection)
Dim orderDA As SqlDataAdapter = New SqlDataAdapter( _
"SELECT OrderID, CustomerID FROM Orders", connection)
Dim ordDetDA As SqlDataAdapter = New SqlDataAdapter( _
"SELECT OrderID, ProductID, Quantity FROM [Order Details]", connection)
Dim custDS As DataSet = New DataSet()
' Open the Connection.
connection.Open()
' Fill the DataSet with schema information and data.
custDA.MissingSchemaAction = MissingSchemaAction.AddWithKey
orderDA.MissingSchemaAction = MissingSchemaAction.AddWithKey
ordDetDA.MissingSchemaAction = MissingSchemaAction.AddWithKey
custDA.Fill(custDS, "Customers")
orderDA.Fill(custDS, "Orders")
ordDetDA.Fill(custDS, "OrderDetails")
' Close the Connection.
connection.Close()
' Create relationships.
custDS.Relations.Add("CustomerOrders", _
custDS.Tables("Customers").Columns("CustomerID"), _
custDS.Tables("Orders").Columns("CustomerID"))
custDS.Relations.Add("OrderDetails", _
custDS.Tables("Orders").Columns("OrderID"), _
custDS.Tables("OrderDetails").Columns("OrderID"))
' Create default DataView settings.
Dim viewManager As DataViewManager = New DataViewManager(custDS)
Dim viewSetting As DataViewSetting
For Each viewSetting In viewManager.DataViewSettings
viewSetting.ApplyDefaultSort = True
Next
viewManager.DataViewSettings("Customers").Sort = "CompanyName"
' Bind to a DataGrid.
Dim grid As System.Windows.Forms.DataGrid = New System.Windows.Forms.DataGrid()
grid.SetDataBinding(viewManager, "Customers")
// Assumes connection is a valid SqlConnection to Northwind.
// Create a Connection, DataAdapters, and a DataSet.
SqlDataAdapter custDA = new SqlDataAdapter(
"SELECT CustomerID, CompanyName FROM Customers", connection);
SqlDataAdapter orderDA = new SqlDataAdapter(
"SELECT OrderID, CustomerID FROM Orders", connection);
SqlDataAdapter ordDetDA = new SqlDataAdapter(
"SELECT OrderID, ProductID, Quantity FROM [Order Details]", connection);
DataSet custDS = new DataSet();
// Open the Connection.
connection.Open();
// Fill the DataSet with schema information and data.
custDA.MissingSchemaAction = MissingSchemaAction.AddWithKey;
orderDA.MissingSchemaAction = MissingSchemaAction.AddWithKey;
ordDetDA.MissingSchemaAction = MissingSchemaAction.AddWithKey;
custDA.Fill(custDS, "Customers");
orderDA.Fill(custDS, "Orders");
ordDetDA.Fill(custDS, "OrderDetails");
// Close the Connection.
connection.Close();
// Create relationships.
custDS.Relations.Add("CustomerOrders",
custDS.Tables["Customers"].Columns["CustomerID"],
custDS.Tables["Orders"].Columns["CustomerID"]);
custDS.Relations.Add("OrderDetails",
custDS.Tables["Orders"].Columns["OrderID"],
custDS.Tables["OrderDetails"].Columns["OrderID"]);
// Create default DataView settings.
DataViewManager viewManager = new DataViewManager(custDS);
foreach (DataViewSetting viewSetting in viewManager.DataViewSettings)
viewSetting.ApplyDefaultSort = true;
viewManager.DataViewSettings["Customers"].Sort = "CompanyName";
// Bind to a DataGrid.
System.Windows.Forms.DataGrid grid = new System.Windows.Forms.DataGrid();
grid.SetDataBinding(viewManager, "Customers");