Verwalten von "DataViews"

Mit einem DataViewManager können Sie die Ansichtseinstellungen für alle Tabellen in einer DataView verwalten. Wenn Sie ein Steuerelement an mehrere Tabellen binden möchten, z. B. ein Raster, das Beziehungen navigiert, ist ein DataViewManager optimal geeignet.

Der DataViewManager enthält eine Auflistung von DataViewSetting-Objekten, die zum Festlegen der Ansichtseinstellung für die Tabellen im DataSet verwendet werden. Die DataViewSettingCollection enthält ein DataViewSetting-Objekt für jede Tabelle in einem DataSet. Mit der zugehörigen DataViewSetting der Tabelle, auf die verwiesen wird, können Sie die Standardeigenschaften ApplyDefaultSort, Sort, RowFilter und RowStateFilter festlegen. Auf die DataViewSetting für eine bestimmte Tabelle kann nach Name oder Ordinalzahl verwiesen werden oder indem ein Verweis an das spezifische Tabellenobjekt übergeben wird. Mit der DataViewSettings-Eigenschaft können Sie auf die Auflistung von DataViewSetting-Objekten in einem DataViewManager zugreifen.

Im folgenden Codebeispiel wird ein DataSet mit den SQL Server-Datenbanktabellen Customers, Orders und Order Details von Northwind gefüllt, anschließend werden die Beziehungen zwischen den Tabellen erstellt, danach werden mit einem DataViewManager die DataView-Standardeinstellungen festgelegt, und es wird ein DataGrid an den DataViewManager gebunden. In diesem Beispiel werden die DataView-Standardeinstellungen für alle Tabellen im DataSet festgelegt, um nach dem Primärschlüssel der Tabelle (ApplyDefaultSort = true) zu sortieren. Anschließend wird die Sortierreihenfolge der Tabelle Customers geändert, um nach CompanyName zu sortieren.

' 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");  

Siehe auch