Charger une combobox à partir du résultat d'une combobox précédente

Signaler
Messages postés
61
Date d'inscription
vendredi 17 février 2012
Statut
Membre
Dernière intervention
18 janvier 2013
-
poupou61
Messages postés
61
Date d'inscription
vendredi 17 février 2012
Statut
Membre
Dernière intervention
18 janvier 2013
-
salut,

donc j'ai un problème pour charger une combobox à partir du résultat d'une combobox précédente :

donc en gros j'ai une combobox qui s'appelle ComboBoxAgInt que je charge depuis un dataset bon jusque la tout va bien.

mais après avec le résultat de cette combobox je dois pouvoir charger une autre combobox qui s'appelle ComboBx_Interimaire et c'est la que le problème arrive.

je crée l'évènement Private Sub ComboBoxAgInt_SelectedIndexChanged et je met mon code comme sa vous vous ferez une idée :

Private Sub ComboBoxAgInt_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBoxAgInt.SelectedIndexChanged

        Dim entreprise As New Mylist
        entreprise = Me.ComboBoxAgInt.SelectedItem

        Me._taPersonne1.FillBy_interimaire(DataSetOrdreDeMission.Personne1, entreprise.Name)
        Dim Donneespersonne As DataTable = _taPersonne1.GetDataBy_interimaire(entreprise.Name)
        Me.ComboBx_Interimaire.Items.Add(New Mylist("", 0))
        For Each Personne As DataRow In Donneespersonne.Rows
            Dim Itemlist As New Mylist
            Itemlist.Name = Personne("pers_nom")
            Itemlist.ItemData = Personne("pers_id")
            Me.ComboBoxAgInt.Items.Add(Itemlist)
        Next


si vous pouviez m'aider sa serai sympa je galère rien ne s'affiche et sa fait un petit moment.

12 réponses

Messages postés
61
Date d'inscription
vendredi 17 février 2012
Statut
Membre
Dernière intervention
18 janvier 2013
1
si vous savez aussi pour remplir un textbox avec le résultat de la même combobox sa serai cool

Ce que tu peux faire c'est que dans ta fonction, tu remplis ton objet Mylist et ensuite tu utilises la méthode Add pour remplir ta liste déroulante. Je ne vois pas trop où est ton problème en fait, tu peux être plus explicite ?

Pour la TextBox (grosso modo) :

Dim maTextBox As TextBox = New TextBox("Une TextBox")
maTextBox.Text = CType(ComboBoxAgInt.SelectedItem.Value, String) '.Value ou .Text


C'est un peu approximatif mais je pense que c'est quelque chose comme ça. Pense à faire un cast si tu utilises la valeur sélectionnée (et non pas le texte affiché de cette valeur).

--
Pylouq
Messages postés
61
Date d'inscription
vendredi 17 février 2012
Statut
Membre
Dernière intervention
18 janvier 2013
1
Bon je n'ai pas encore testé mais déjà merci.

Je vais essayé d'être un peu plus précis dans mes explications désolé :

donc en gros j'ai ma ComboBoxAgInt qui m'affiche le libellé des agences intérimaires(le libellé est pris dans la table entreprise). et mon autre combobox (ComboBx_Interimaire) devrait m'afficher le nom des intérimaires (le nom est pris dans la table personne). j'ai aussi une table agence_interimaire pour pouvoir différencier avec les autres entreprises et la table interimaire pour différencier aussi. et donc tout sa est dans ma requête SQL dans le Personne1TableAdapter.

Et donc le problème c'est que la combobox ComboBx_Interimaire reste vide quand je sélectionne une agence intérimaire, alors que ma requête marche c'est sur je l'ai testé.
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
46
Salut

Sers toi du debugger(outil indispensable)
si tu dis
ComboBx_Interimaire reste vide quand je sélectionne une agence intérimaire, alors

donc mets un point d'arret dans ton code
où tu remplis le ComboBx_Interimaire
donc ici
Me.ComboBx_Interimaire.Items.Add(New Mylist("", 0))


lance ton prog et teste
possible aussi que
ComboBoxAgInt_SelectedIndexChanged
n'est pas l'évenement qui convient
Messages postés
61
Date d'inscription
vendredi 17 février 2012
Statut
Membre
Dernière intervention
18 janvier 2013
1
En effet ce n'était pas le bon évènement j'ai changé en :

ComboBoxAgInt_SelectedValueChanged


et mes textbox marchent maintenant donc c'est déjà un bon début par contre pour ma ComboBx_Interimaire y a un petit problème que j'ai découvert grâce au point d'arrêt :

Donc j'explique en avant : enfaite dans la base de données les agences intérimaires n'ont pas forcement des intérimaires. Donc j'ai fait une requète sql dans la base de donnée pour avoir le libelle des agences qui en avaient. Et c'est la que je comprend pas, enfaite quand je sélectionne une agence qui a des intérimaires dans la combobox en gros c'est comme si je n'avais pas de point d'arrêt il ne rentre pas dans le code, rien ne se passe quoi.

Par contre, si je sélectionne une agence qui n'a pas d'intérimaire, la il rentre dans le code avec le point d’arrêt enfin tout se passe normalement, c'est étrange.
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
46
Salut
mets ton point d'arret avant
Private Sub ComboBoxAgInt_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBoxAgInt.SelectedValueChanged
ici

et après vas pas à pas F8 et verifie
Messages postés
61
Date d'inscription
vendredi 17 février 2012
Statut
Membre
Dernière intervention
18 janvier 2013
1
bon ba je viens d'essayer ce que, et donc quand je sélectionne une agence qui a des intérimaires et en faisant avec le pas à pas, le premier que je sélectionne sa s'arrête à la ligne :
Me._taPersonne1.FillBy_interimaire(DataSetOrdreDeMission.Personne1, entreprise.Name)


et le deuxième que je sélectionne (toujours une qui a des intérimaires) sa s'arrête la ligne du dessous :
Dim Donneespersonne As DataTable = _taPersonne1.GetDataBy_interimaire(entreprise.Name)

et si je recommence avec d'autres sa change rien.

alors que si je sélectionne une agence sans un intérimaire la tout se passe normalement.
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
46
pas clair dans le processus des évenements
tu écris le premier que je sélectionne sa
s'arrête à la ligne :
et après où le degugger va ?
tu dois continuer avec F8
pourquoi tu choisis un autre item
et le deuxième que je sélectionne


le mieux serait que tu commentes chaque lignes
de ComboBoxAgInt_SelectedValueChanged
je n'ai pas compris le déroulement des évenements
Messages postés
61
Date d'inscription
vendredi 17 février 2012
Statut
Membre
Dernière intervention
18 janvier 2013
1
Désolé, mais en gros le debugger il va nul part il va pas plus loin, s'arrête et sa me remet la fenêtre de mon application. Et j'en ai sélectionné un autre juste pour voir, et donc le résultat est différent dans le debugage, par contre ma combobox reste vide


 Private Sub ComboBoxAgInt_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBoxAgInt.SelectedValueChanged
        Dim entreprise As New Mylist
        entreprise = Me.ComboBoxAgInt.SelectedItem
        'il s'arrête à cette ligne là(quand je sélectionne une agence qui a des intérimaires, et donc le debugger s'arrête là)
        Me._taPersonne1.FillBy_interimaire(DataSetOrdreDeMission.Personne1, entreprise.ItemData)
        'et après si je sélectionne une nouvelle agence sa s'arrête à cette ligne là.
        Dim Donneespersonne As DataTable = _taPersonne1.GetDataBy_interimaire(entreprise.ItemData)
        Me.ComboBx_Interimaire.Items.Add(New Mylist("", 0))
        'alors que si je sélectionne une agence sans intérimaire il passe sur le for each et passe au end sub juste après.
        For Each Personne As DataRow In Donneespersonne.Rows
            Dim Itemlist As New Mylist
            Itemlist.Name = Personne("pers_nom")
            Itemlist.ItemData = Personne("pers_id")
            Me.ComboBoxAgInt.Items.Add(Itemlist)
end sub
        Next


j'espère c'est plus clair mais j'ai un peu de mal a expliquer, désolé.
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
46
le mieux si tu veux comprendre ton code
c'est de le commenter
le debugger lui execute ton code
par ex tu as écrit
Me._taPersonne1.FillBy_interimaire(DataSetOrdreDeMission.Personne1, entreprise.ItemData)

explique ce que doit faire cette ligne
Messages postés
61
Date d'inscription
vendredi 17 février 2012
Statut
Membre
Dernière intervention
18 janvier 2013
1
Je te donne l'exemple dont je me suis inspiré qui est sur le wiki de l'entreprise ou je suis en stage :

Exemple : Charger les natures dans une combobox (libellé et identifiant)

    Table Nature : Nat_ID (Identifiant) et Nat_Libelle (Libelle) 


 'déclaration des Table Adapter à utiliser en haut de la classe
 Dim dataNatureTableAdapter As New DataSetArticleTableAdapters.NatureTableAdapter

 ' Remplissage Combobox Nature
 ' On récupère toutes les natures de la base de donnée dans un Table adapter
 Me.dataNatureTableAdapter.Fill(DatasetArticle.Nature)
 ' On place les données Nature dans un DataTable pour les manipuler ensuite
 Dim donneesNature As DataTable = dataNatureTableAdapter.GetData()
 ' Cette ligne permet d'ajouter un élèment vide dans la combobox
 Me._ComboBoxNature.Items.Add(New Mylist("", 0))
 ' Pour chaque ligne de mon DataTableNature, je récupère une DataRow (cette Datarow contient les élèments de la nature)
 For Each maNature As DataRow In donneesNature.Rows
   'Création d'un objet myList (pour y stocker le libellé et l'identifiant de la nature)
   'En Vb.net les combobox n'ont pas de Tag, c'est pour cela que nous utilisons un objet myList
   Dim ItemList As New Mylist
   'On y place le libellé dans la propriété Name de l'objet myListe, on accéde au proriété de la 
   'nature en précisant le nom du champs de la base
   ItemList.Name = maNature("NAT_LIBELLE")
   'ItemData doit contenir l'identifiant de la nature
   ItemList.ItemData = maNature("NAT_ID")
   'Ensuite on ajoute l'objet MyList dans la combobox
   Me._ComboBoxNature.Items.Add(ItemList)
 Next


bon j'ai changé deux trois trucs vu que j'ai besoin du résultat d'une autre combobox mais bon en gros c'est sa
Messages postés
61
Date d'inscription
vendredi 17 février 2012
Statut
Membre
Dernière intervention
18 janvier 2013
1
et aussi je voudrais ajouté un petit truc en dessous de :
 Me._taPersonne1.FillBy_interimaire(DataSetOrdreDeMission.Personne1, entreprise.ItemData)
        Dim Donneespersonne As DataTable = _taPersonne1.GetDataBy_interimaire(entreprise.ItemData)
        Me.ComboBx_Interimaire.Items.Add(New Mylist("", 0))
        For Each Personne As DataRow In Donneespersonne.Rows
            Dim Itemlist As New Mylist
            Itemlist.Name = Personne("pers_nom")
            Itemlist.ItemData = Personne("pers_id")
            Me.ComboBoxAgInt.Items.Add(Itemlist)
        Next


j'ai un bout de code qui doit me masquer une textbox si la valeur de la combobox est changé et donc si je sélectionne les agences avec intérimaires et bien il ne masque pas ma textbox. j'ai essayé le debugger en faisant en pas à pas et il ne passe dessus.