2009-09-01 2 views
0

J'ai donc quelque chose comme la structure des données suivantes (constructeurs omis)DataGridView avec DataGridViewComboBoxColumn spécifique rangée contenu

class Child { 
    public string Name { get; set; } 
    public int Age { get; set; } 
} 

class Parent { 
    public string Name { get; set; } 
    public List <Child> Children { get; private set; } // never null; list never empty 
    public Child FavoriteChild { get; set; }    // never null; always a reference to a Child in Children 
} 

List <Parent> Parents; 

Ce que je veux faire est de montrer un DataGridView où chaque ligne est un parent de la liste des parents. Chaque ligne doit avoir deux colonnes: une zone de texte affichant le nom du parent et un DataGridViewComboBoxColumn contenant les enfants de ce parent, à partir desquels l'utilisateur peut sélectionner l'enfant favori du parent.

Je suppose que je pourrais faire le tout manuellement, mais je voudrais faire tout cela avec plus ou moins de liaison de données standard. Il est assez facile de lier DataGridView à la liste des parents, et assez facile pour lier l'enfant sélectionné à la propriété FavoriteChild.

La partie qui me donne la difficulté est qu'il ressemble à la colonne Combo Box veut se lier à une source de données pour tous le contenu de la liste déroulante sur toutes les lignes. Je voudrais que chaque instance de la zone de liste déroulante se lie à la liste des enfants de chaque parent. Je ne suis pas familier avec C#/Windows Forms, donc il me semble que quelque chose d'évident m'échappe. Ou il pourrait être que "vous ne pouvez pas y arriver à partir d'ici."

Il n'est pas trop difficile de faire une liste séparée de tous les enfants et de la filtrer par parent; Je regarde cette possibilité maintenant. Est-ce faisable, ou existe-t-il un meilleur moyen?

+0

Les parents ne devraient pas avoir d'enfants préférés ;-) – baruch

Répondre

0

On dirait que la réponse à this question m'a mis sur la bonne voie. J'ai attaché un gestionnaire à l'événement RowsAdded et définissez la source de données de zone de liste déroulante manuellement.

Questions connexes