Définition de la vue par défaut d'une table à l'aide d'un DataViewManager
Vous pouvez utiliser un DataViewManager pour gérer les paramètres de vue pour toutes les tables d'un DataSet. Si vous disposez d'un contrôle que vous souhaitez lier à plusieurs tables, comme une grille qui parcourt des relations, un DataViewManager est idéal.
Le DataViewManager contient une collection d'objets DataViewSetting qui servent à définir les paramètres de vue des tables du DataSet. Le DataViewSettingCollection contient un objet DataViewSetting pour chaque table d'un DataSet. Vous pouvez définir les propriétés par défaut ApplyDefaultSort, Sort, RowFilter et RowStateFilter de la table référencée en utilisant son DataViewSetting. Vous pouvez faire référence au DataViewSetting d'une table particulière par nom ou référence ordinale, ou en passant une référence à cet objet de table spécifique. Vous pouvez accéder à la collection d'objets DataViewSetting d'un DataViewManager via la propriété DataViewSettings.
L'exemple de code suivant remplit un DataSet à l'aide des tables Customers, Orders et Order Details de la base de données Microsoft SQL Server 7.0 Northwind, crée les relations entre les tables, utilise un DataViewManager pour définir les paramètres par défaut du DataView, puis lie un DataGrid au DataViewManager. L'exemple définit les paramètres par défaut du DataView pour toutes les tables du DataSet en vue d'un tri sur la clé primaire de la table (ApplyDefaultSort = true), puis modifie l'ordre de tri de la table Customers pour que le tri s'effectue en fonction de CompanyName.
' Create a Connection, DataAdapters, and a DataSet.
Dim nwindConn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind")
Dim custDA As SqlDataAdapter = New SqlDataAdapter("SELECT CustomerID, CompanyName FROM Customers", nwindConn)
Dim orderDA As SqlDataAdapter = New SqlDataAdapter("SELECT OrderID, CustomerID FROM Orders", nwindConn)
Dim ordDetDA As SqlDataAdapter = New SqlDataAdapter("SELECT OrderID, ProductID, Quantity FROM [Order Details]", nwindConn)
Dim custDS As DataSet = New DataSet()
' Open the Connection.
nwindConn.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.
nwindConn.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 myDVM As DataViewManager = New DataViewManager(custDS)
Dim myDVS As DataViewSetting
For Each myDVS In myDVM.DataViewSettings
myDVS.ApplyDefaultSort = True
Next
myDVM.DataViewSettings("Customers").Sort = "CompanyName"
' Bind to a DataGrid.
Dim myGrid As System.Windows.Forms.DataGrid = New System.Windows.Forms.DataGrid()
myGrid.SetDataBinding(myDVM, "Customers")
[C#]
// Create a Connection, DataAdapters, and a DataSet.
SqlConnection nwindConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind");
SqlDataAdapter custDA = new SqlDataAdapter("SELECT CustomerID, CompanyName FROM Customers", nwindConn);
SqlDataAdapter orderDA = new SqlDataAdapter("SELECT OrderID, CustomerID FROM Orders", nwindConn);
SqlDataAdapter ordDetDA = new SqlDataAdapter("SELECT OrderID, ProductID, Quantity FROM [Order Details]", nwindConn);
DataSet custDS = new DataSet();
// Open the Connection.
nwindConn.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.
nwindConn.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 myDVM = new DataViewManager(custDS);
foreach (DataViewSetting myDVS in myDVM.DataViewSettings)
myDVS.ApplyDefaultSort = true;
myDVM.DataViewSettings["Customers"].Sort = "CompanyName";
// Bind to a DataGrid.
System.Windows.Forms.DataGrid myGrid = new System.Windows.Forms.DataGrid();
myGrid.SetDataBinding(myDVM, "Customers");
Voir aussi
Création et utilisation de DataViews | DataSet, classe | DataViewManager | DataViewSetting, classe | DataViewSettingCollection, classe