2009-10-06 10 views
1

J'ai deux listes que je charge lorsque mon application démarre. Le premier charge un ensemble complet de données de la base de données, le second charge indépendamment un ensemble de données associées à partir du fichier.
Chaque liste est chargée dans un BindingSource et définie en tant que DataSource pour leur liste déroulante respective. Les données se chargent très bien.
Le problème est que j'ai besoin que la seconde comboBox affiche uniquement les éléments de sa liste qui correspondent à la valeur sélectionnée de la première liste. J'ai tenté de définir les membres de la valeur sur le bit de données référentiel, mais je n'arrive pas à déterminer comment obtenir les comboBoxSettings pour afficher uniquement les éléments dont l'ID d'événement correspond à l'ID d'événement de l'objet sélectionné dans la liste déroulante EventList.Combobox de filtrage basé sur le membre de valeur

  //Event List comboBox 
     comboBoxEventList.DataSource = _eventSimPresenter.BindingSourceEventList; 
     comboBoxEventList.DisplayMember = "DisplayName"; 
     comboBoxSettings.ValueMember = "EventID"; 

     //Settings combobox 
     comboBoxSettings.DataSource = _eventSimPresenter.BindingSourceUserSettings; 
     if (_eventSimPresenter.BindingSourceUserSettings.Count > 0) 
     { 
      comboBoxSettings.DisplayMember = "EventName"; 
      comboBoxSettings.ValueMember = "EventID"; 
     } 

merci!

Répondre

2

Vous pouvez créer une méthode dans _ eventSimPresenter qui renvoie un BindingSourceUserSettings par eventId. Lorsque les changements de 1er COMBOBOX, prendre eventId et mettre à jour 2ème comboBox sélectionné datasource:

... 
    comboBoxSettings.DataSource = 
       _eventSimPresenter.GetBindingSourceUserSettings(selectedEventId) 
    if (_eventSimPresenter.BindingSourceUserSettings.Count > 0) 
    { 
     comboBoxSettings.DisplayMember = "EventName"; 
     comboBoxSettings.ValueMember = "EventID"; 
    } 

Autrement dit, le filtrage doit être appliqué à la source de données, car il est impossible de le faire via le comboBox.

+0

Oui, merci. Je n'ai pas eu beaucoup de chance avec l'utilisation du filtrage sur les contrôles winforms, alors pourquoi commencer maintenant? J'ai rappelé pour remplir la source de données avec les données filtrées et tout va bien. – Bob

Questions connexes