Combobox consommateurs de données sans interaction avec la source

Résolu
BasicZx81 Messages postés 140 Date d'inscription samedi 5 mars 2011 Statut Membre Dernière intervention 13 août 2013 - 19 févr. 2012 à 12:25
BasicZx81 Messages postés 140 Date d'inscription samedi 5 mars 2011 Statut Membre Dernière intervention 13 août 2013 - 19 févr. 2012 à 20:18
Bonjour à tous,
J'ai pas trouvé mieux comme titre mais je vais expliqué plus précisément mon problème :
Je voudrais remplir la liste d'un combobox avec des données provenant d'une table ou d'un Bindingsource et cela en évitant d'avoir recours à la méthode "add" (Pourquoi ? parce que j'aimerais éviter de parcourir tous les enregistrements un par un alors que l'on pourrait le faire avec une simple liaison de données).
Pour cela j'ai lié mon combobox à mon Bindingsource comme ceci :

        ' Chargement du Combobox ListeProjets
        ComboBoxPROJETCOURANT.DisplayMember = ChampsProjets.NOMDUPROJET
        ComboBoxPROJETCOURANT.ValueMember = ChampsProjets.ID_PROJET ' (Permet de récupérer l'ID_PROJET associé au nom du Projet selectionné à l'aide de ComboBoxPROJETCOURANT.SelectedValue)
        ComboBoxPROJETCOURANT.DataSource = BindingSourceProjets
        ComboBoxPROJETCOURANT.DropDownStyle = ComboBoxStyle.DropDownList


Le remplissage de mon combobox s'effectue correctement et je peux récupérer les éléments selectionés mais le problème c'est que lorsque je selectionne un éléments du combobox cela modifie la position de ligne courante dans mon bindingsource. et inversement lorsque je me positionne sur une ligne de mon bindingsource cela modifie la selection de mon combobox. En gros je voudrais juste utiliser la liaison de donnée pour remplir mon combobox, c'est tout.
Comment peux t'on faire cela ?

J'ai une vague notion de Bindingcontext mais je ne connais pas assez pour savoir si c'est une piste à explorer pour répondre au problème.

Merci beaucoup si vous pouvez m'aider.

2 réponses

BasicZx81 Messages postés 140 Date d'inscription samedi 5 mars 2011 Statut Membre Dernière intervention 13 août 2013
19 févr. 2012 à 20:18
J'ai trouvé :
Le BindingContext fonctionne mais il ne faut pas lier les contrôles que l'on veux rendre indépendant à un BindingSource et a fortiori au BindingSource principale du formulaire.
Il faut se lier directement au Dataset (je n'ai pas essayé avec une Datatable ou un Dataview).
3
BasicZx81 Messages postés 140 Date d'inscription samedi 5 mars 2011 Statut Membre Dernière intervention 13 août 2013
19 févr. 2012 à 19:15
Bonjour, A priori c'est bien Bindingcontext qu'il faut utiliser mais ca ne marche pas (le combobox est toujours synchronisé avec la source).
J'ai mis mon combobox dans un groupbox en m'inspirant du code sur msdn :
http://msdn.microsoft.com/fr-fr/library/system.windows.forms.bindingcontext.bindingcontext.aspx

Ces 2 lignes ont été ajoutées au début du code de mon premier post.
        Dim Bc1 As New BindingContext
        GroupBox1.BindingContext = Bc1
        ComboBoxPROJETCOURANT.BindingContext = Bc1


Ça à l'air simple pourtant je ne vois pas du tout ou ça cloche ?

Merci de m'aider s'il vous plait.
0
Rejoignez-nous