Compartir a través de


Configurar las vistas de tabla predeterminadas mediante DataViewManager

Puede utilizar un DataViewManager para administrar la configuración de vista para todas las tablas de un DataSet. Si tiene un control que desea enlazar a varias tablas, como una cuadrícula que explora relaciones, es ideal utilizar un DataViewManager.

El DataViewManager contiene una colección de objetos DataViewSetting que se utilizan para establecer la configuración de vista de las tablas del DataSet. La DataViewSettingCollection contiene un objeto DataViewSetting para cada tabla de un DataSet. Puede establecer las propiedades ApplyDefaultSort, Sort RowFilter y RowStateFilter predeterminadas de la tabla a la que se hace referencia mediante su DataViewSetting. Puede hacer referencia al DataViewSetting de una tabla determinada por su nombre o por su referencia ordinal, o si pasa una referencia a dicho objeto de tabla. Puede tener acceso a la colección de objetos DataViewSetting de un DataViewManager mediante la propiedad DataViewSettings.

En el siguiente ejemplo de código se rellena un DataSet con las tablas Customers, Orders y Order Details de la base de datos Northwind de Microsoft SQL Server 7.0, se crean las relaciones entre las tablas, se utiliza un DataViewManager para establecer la configuración predeterminada de DataView y se enlaza una DataGrid al DataViewManager. En el ejemplo se establece la configuración predeterminada de DataView para todas las tablas del DataSet de manera que se ordene según la clave principal de la tabla (ApplyDefaultSort = true) y se modifica el criterio de ordenación de la tabla Customers para que se ordene por 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");

Vea también

Crear y utilizar DataViews | DataSet (Clase) | DataViewManager (Clase) | DataViewSetting (Clase) | DataViewSettingCollection (Clase)