IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

remplir une listbox2 en cliquant sur un élément d'un listbox1 vb.net [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Par défaut remplir une listbox2 en cliquant sur un élément d'un listbox1 vb.net
    Bonjour à tous !

    J'ai deux tables Clients et Devis qui sont liées.
    J'ai récupéré le nom de mes clients dans une listbox1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Me.ClientsTableAdapter.Fill(Me.DevisDataSet.Clients)
    J'aimerai qu'en cliquant sur un nom dans ma listbox1 que ma listbox2 affiche les noms des devis liés à ce client.

    Si quelqu'un a une idée pour me mettre sur la voie
    Merci d'avance.

  2. #2
    Membre éclairé Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Par défaut
    Bonjour,
    Il faut regarder les évènements de ta listbox1. Parmi ceux là, il y en a un qui se déclenche à la sélection d'un item.
    Ensuite tu crées une fonction qui s'active lors de cet événement et qui rempli ta listbox2 en fonction de l'item sélectionné en listbox1.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 17
    Par défaut
    Je te conseillerai d'utiliser 2 comboBox au lieu de liste box ainsi tu aurai un DisplayMember qui est la valeur afficher et un valueMember qui est la valeur réel tu met donc les nom en displayMember et l'id du nom en valueMember et tu te sers de l'id de l'item sélectionner via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomCombox.selectedValue.ValueMember.toString
    pour lancer une requête dans l'autre combo box qui se remplira avec cette dernière .
    ex combobox.datavalue = exectueRequete("Select * From devis Where idClient ") ou id client est égal a la valueMember cité plus haut

    tous ça sur l'action du SelectItemChange

    ^^

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2012
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 337
    Par défaut
    Bonjour,

    Puisque vous utilisez un DataSet pour les données, pourquoi ne pas utiliser deux BindingSource :

    Soit une ComboBox nommée cboClient et un BindingSource nommé bsClients
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    bsClients.DataSource=MonDataSet
    bsClients.DataMember="Clients" 'La table "Clients" du DataSet
    cboClient.DataSource=bsClients
    cboClients.DisplayMember="Raison_Sociale"
    cbo.ValueMember="ID"
    Soit un deuxième contrôle possédant une propriété .DataSource (datagridview, combobox, ...) nommé MonContrôleAffichage et un deuxième BindingSource nommé bsDevisDuClient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    'La subtilité est ici, on se sert du premier bindingsource comme source de données
    bsDevisDuClient.DataSource=bsClients
    'Un petit piège, on se sert de la relation entre les tables pour la propriété .DataMember du bindingsource
    bsDevisDuClient.DataMember= "Client_Devis" 'Le nom de la relation dans le dataset entre la table Clients et la table Devis
    MonContrôleAffichage.DataSource=bsDevisDuClient
    'Et après, ça dépend du contrôle utilisé.
    L'avantage, c'est qu'en fait il n'y a pas de code à écrire, tout se fait via l'interface de design

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Par défaut
    Merci à tous pour vos réponses; je vais tester les différentes solutions, je vous tiendrai au courant.

    Mais je tiens à signaler que les comboboxs ne correspondent pas à ce que je veux faire.

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,
    Citation Envoyé par sowboubacar Voir le message
    Mais je tiens à signaler que les comboboxs ne correspondent pas à ce que je veux faire.
    Les listBox contiennent aussi les propriétés DisplayMember , et ValueMember .
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Par défaut
    Bonjour tout le monde,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstclients.SelectedIndexChanged
            Dim str As Integer
            Dim sql As String
            Dim reader As OleDbDataReader
            str = lstclients.SelectedValue
            lstdevis.Items.Clear()
            Try
                cnxstr = ("Provider = Microsoft.Jet.OLEDB.4.0;Data source = Y:\Devis.mdb")
                cnx = New OleDbConnection
                cnx.ConnectionString = cnxstr
                cnx.Open()
                sql = "Select Nom From Devis Where idClient Like  '" & str & "'"
                Dim requete As New OleDbCommand(sql, cnx)
     
                reader = requete.ExecuteReader()
     
                Do While reader.Read()
                    lstdevis.Items.Add(reader.GetValue(0))
                Loop
                reader.Close()
            Catch ex As Exception
                MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message)
            End Try
            Try
                cnx.Close()
            Catch ex As Exception
                MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message)
            End Try
            Width = 733
     
        End Sub
    J'ai trouvé une solution, je ne sais pas si c'est la plus optimale mais elle marche
    Merci à tous d'avoir éclairer mon chemin vous êtes

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/03/2012, 05h37
  2. placer un texte dans une textarea en cliquant sur un bouton
    Par BernardT dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/11/2005, 17h17
  3. Réponses: 4
    Dernier message: 14/11/2005, 15h58
  4. Réponses: 6
    Dernier message: 27/05/2005, 15h43
  5. Comment trier une DBGRID en cliquant sur une colonne
    Par sessime dans le forum Bases de données
    Réponses: 8
    Dernier message: 09/10/2004, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo