Partager via


Comment : créer des listes maîtres/détails avec le contrôle DataGrid Windows Forms

Mise à jour : novembre 2007

Remarque :

Le contrôle DataGridView remplace le contrôle DataGrid et lui ajoute des fonctionnalités ; toutefois, le contrôle DataGrid est conservé pour la compatibilité descendante et l'utilisation future si tel est votre choix. Pour plus d'informations, consultez Différences entre les contrôles DataGridView et DataGrid Windows Forms.

Si votre DataSet contient une série de tables connexes, vous pouvez utiliser deux contrôles DataGrid pour afficher les données dans un format maître/détail. Le premier contrôle DataGrid est désigné comme grille principale et le second comme grille détaillée. Lorsque vous sélectionnez une entrée dans la liste principale, toutes les entrées enfants connexes s'affichent dans la liste détaillée. Par exemple, si votre DataSet contient une table Customers et une table connexe Orders, vous spécifiez la table Customers comme grille principale et la table Orders comme grille détaillée. Lorsqu'un client est sélectionné dans la grille principale, toutes les commandes qui lui sont associées dans la table Orders s'affichent dans la grille détaillée.

Pour définir une relation maître/détail par programme

  1. Créez deux contrôles DataGrid et définissez leurs propriétés.

  2. Ajoutez des tables au groupe de données.

  3. Déclarez une variable de type DataRelation pour représenter la relation à créer.

  4. Instanciez la relation en spécifiant son nom et en indiquant la table, la colonne et l'élément devant lier les deux tables.

  5. Ajoutez la relation à la collection Relations de l'objet DataSet.

  6. Utilisez la méthode SetDataBinding de DataGrid pour lier chacune des grilles à DataSet.

    L'exemple suivant montre comment définir une relation maître/détail entre les tables Customers et Orders dans un DataSet(ds) préalablement généré.

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

Voir aussi

Tâches

Comment : lier le contrôle DataGrid Windows Forms à une source de données

Référence

Vue d'ensemble du contrôle DataGrid (Windows Forms)

Autres ressources

DataGrid, contrôle (Windows Forms)