Cómo: Crear listas principal-detalle con el control DataGrid de Windows Forms

Actualización: noviembre 2007

Nota:

Aunque el control DataGridView viene a reemplazar y a agregar funcionalidad al control DataGrid, este control DataGrid se conserva a efectos de compatibilidad con versiones anteriores y uso futuro, según sea el caso. Para obtener más información, vea Diferencias entre los controles DataGridView y DataGrid de formularios Windows Forms.

Si un objeto DataSet contiene una serie de tablas relacionadas, puede utilizar dos controles DataGrid para mostrar los datos en formato principal-detalle. De este modo, un control DataGrid se designa como cuadrícula principal y el otro como cuadrícula de detalles. Al seleccionar una entrada en la lista principal, la lista de detalles muestra todas las entradas secundarias relacionadas. Por ejemplo, si el objeto DataSet contiene una tabla Customers y una tabla relacionada Orders, se especificaría la tabla Customers como cuadrícula principal y la tabla Orders como cuadrícula de detalles. Al seleccionar un cliente en la cuadrícula principal, la cuadrícula de detalles mostraría todos los pedidos asociados con ese cliente en la tabla Orders.

Para establecer una relación principal-detalle mediante programación

  1. Cree dos nuevos controles DataGrid y establezca sus propiedades.

  2. Agregue tablas al conjunto de datos.

  3. Declare una variable de tipo DataRelation para representar la relación que desea crear.

  4. Cree una instancia de la relación; para ello, especifique un nombre para la relación y la tabla, columna y elemento que enlazarán las dos tablas.

  5. Agregue la relación a la colección Relations del objeto DataSet.

  6. Utilice el método SetDataBinding de DataGrid para enlazar las cuadrículas a DataSet.

    El ejemplo siguiente muestra cómo establecer una relación principal-detalle entre las tablas Customers y Orders de un objeto DataSet (ds) generado previamente.

    Dim myDataRelation As DataRelation
    myDataRelation = New DataRelation _
       ("CustOrd", ds.Tables("Customers").Columns("CustomerID"), _
       ds.Tables("Orders").Columns("CustomerID"))
    ' Add the relation to the DataSet.
    ds.Relations.Add(myDataRelation)
    GridOrders.SetDataBinding(ds, "Customers")
    GridDetails.SetDataBinding(ds, "Customers.CustOrd")
    
    DataRelation myDataRelation;
    myDataRelation = new DataRelation("CustOrd", ds.Tables["Customers"].Columns["CustomerID"], ds.Tables["Orders"].Columns["CustomerID"]);
    // Add the relation to the DataSet.
    ds.Relations.Add(myDataRelation);
    GridOrders.SetDataBinding(ds,"Customers");
    GridDetails.SetDataBinding(ds,"Customers.CustOrd");
    
    DataRelation^ myDataRelation;
    myDataRelation = gcnew DataRelation("CustOrd",
       ds->Tables["Customers"]->Columns["CustomerID"],
       ds->Tables["Orders"]->Columns["CustomerID"]);
    // Add the relation to the DataSet.
    ds->Relations->Add(myDataRelation);
    GridOrders->SetDataBinding(ds, "Customers");
    GridDetails->SetDataBinding(ds, "Customers.CustOrd");
    

Vea también

Tareas

Cómo: Enlazar el control DataGrid de formularios Windows Forms a un origen de datos

Referencia

Información general del control DataGrid (Formularios Windows Forms)

Otros recursos

DataGrid (Control, formularios Windows Forms)