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 :

Comment alimenter plusieurs ComboBox avec le même DataTable ?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Retraité (Travailleur autonome)
    Inscrit en
    Octobre 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraité (Travailleur autonome)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 82
    Billets dans le blog
    1
    Par défaut Comment alimenter plusieurs ComboBox avec le même DataTable ?
    Bonjour à tous,

    J'ai 4 ComboBox qui doivent contenir les mêmes items. Le problème se présente comme suit:

    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
     
    Private dtOrdre As New DataTable
     
            dtOrdre.Columns.Add("No Dossier")
            dtOrdre.Columns.Add("Ordre")
     
            dtOrdre.Rows.Add(1.ToString, "Croissant")
            dtOrdre.Rows.Add(2.ToString, "Décroissant")
            dtOrdre.Rows.Add(3.ToString, "Original")
     
            ComboOrdre1.DataSource = dtOrdre
            ComboOrdre1.ValueMember = "Ordre"
            ComboOrdre2.DataSource = dtOrdre
            ComboOrdre2.ValueMember = "Ordre"
            ComboOrdre3.DataSource = dtOrdre
            ComboOrdre3.ValueMember = "Ordre"
            ComboOrdre4.DataSource = dtOrdre
            ComboOrdre4.ValueMember = "Ordre"
    Ce code donne le résultat suivant:
    Nom : Classement.jpg
Affichages : 194
Taille : 6,1 Ko

    Là, si je sélectionne autre chose dans l'un des ComboBox, tous les autres prennent la même valeur. Et ce n'est pas souhaité.

    Merci de vos lumières.

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,
    Tous tes ComboBox présentent les mêmes données au même moment parce qu'ils sont alimentés par le même jeu de données, ils ont la même valeur pour DataSource. Si d'autres objets (ListBox, DataGridView, ...) avaient aussi le même DataSource, ils présenteraient eux aussi les mêmes données au même moment.
    Donc pour résoudre ton problème :
    • Tu peux "déconnecter" certains ComboBox (ne pas leur donner de DataSource) et les remplir "manuellement" quand cela te convient;
    • Donner des DataSource différents aux divers ComboBox (si toutefois ton algorithmique le permet compte tenu de tes objectifs).


    J'espère que cette info t'inspirera ...

  3. #3
    Membre confirmé

    Profil pro
    Retraité (Travailleur autonome)
    Inscrit en
    Octobre 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraité (Travailleur autonome)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 82
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    D'abord merci à toi Phil Rob.

    Effectivement, j'ai songé à cette solution pour ce cas précis. De toutes manières, il n'y a que 3 choix dans ce combo.

    Toutefois, chacun de ces combos sera couplé avec un autre combo dans lequel, il y aura les noms de tous les champs d'une table. Et cette table ne sera pas toujours la même. Alors je dois trouver une façon de remplir les 4 combos avec les mêmes noms de champs pour une table donnée. L'utilisateur doit pouvoir choisir un champ dans un combo et l'ordre de classement dans l'autre. Pour le moment, les tables ne sont pas encore définies alors je ne peux pas tester le comportement des combos avec les noms de champs c'est pourquoi je les teste avec l'ordre de classement.

    Voici un aperçu de l'interface désiré:
    Nom : Classement2.jpg
Affichages : 150
Taille : 13,7 Ko

    Voilà. Merci pour les conseils

  4. #4
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Bonjour,

    il vous faut utiliser les dataview, car par défaut, le binding se fait sur la propriété DefaultView du datatable, donc tous les combo on la même vue, par contre si vous généré votre vue plus de soucis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ComboOrdre1.DataSource = new DataView(dtOrdre);
    ComboOrdre2.DataSource = new DataView(dtOrdre);
    '...
    https://docs.microsoft.com/en-us/dot...ramework-4.7.2

    P.S. :
    Il y a aussi le BindingSource qui donne un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim bs1 = new BindingSource()
    bs1.DataSource = dtOrdre
    ComboOrdre1.DataSource = bs1;
    Dim bs2 = new BindingSource()
    bs2.DataSource = dtOrdre' Même dataTable
    ComboOrdre2.DataSource = bs2;
    '...

  5. #5
    Membre confirmé

    Profil pro
    Retraité (Travailleur autonome)
    Inscrit en
    Octobre 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraité (Travailleur autonome)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 82
    Billets dans le blog
    1
    Par défaut
    Merci Sankasssss

    J'avais déjà trouvé une autre solution mais celle-ci, sans l'avoir essayé, me semble plus simple.

    Je t'en donne des nouvelles.

  6. #6
    Membre confirmé

    Profil pro
    Retraité (Travailleur autonome)
    Inscrit en
    Octobre 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraité (Travailleur autonome)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 82
    Billets dans le blog
    1
    Par défaut
    Voilà, j'ai fait le test...

    Voici le code que j'ai utilisé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            ComboOrdre1.DataSource = dtOrdre
     
            For i = 0 To ComboOrdre1.Items.Count - 1
                ComboOrdre2.Items.Add(ComboOrdre1.Items(i))
                ComboOrdre3.Items.Add(ComboOrdre1.Items(i))
                ComboOrdre4.Items.Add(ComboOrdre1.Items(i))
            Next
    En comparant les deux versions, je dois dire que je préfère celle-ci car, pour les combos qui ne seront pas utilisés, la valeur reste vide contrairement à l'option que tu m'a proposée.

    Merci quand-même, ça m'a permis d'en apprendre un peu plus.

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

Discussions similaires

  1. [A-03] Comment alimenter une combobox avec plusieurs tables
    Par MichaSarah dans le forum VBA Access
    Réponses: 3
    Dernier message: 15/01/2009, 11h02
  2. plusieurs combobox avec la même source
    Par ptitepo dans le forum VB.NET
    Réponses: 6
    Dernier message: 23/11/2008, 19h59
  3. Réponses: 5
    Dernier message: 12/03/2008, 19h41
  4. Comment remplir un ComboBox avec le nom des feuilles Excel ?
    Par libracom dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 27/06/2005, 15h14
  5. Economie de mémoire pour plusieur images avec la même source
    Par neness dans le forum Composants VCL
    Réponses: 5
    Dernier message: 18/01/2004, 10h56

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