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

Windows Forms Discussion :

comment remplir une checkedlistbox à partir d'une autre ?


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Points : 15
    Points
    15
    Par défaut comment remplir une checkedlistbox à partir d'une autre ?
    bonjour a tous, voila mon probleme est dans le titre, pour une application que je développe en c# et sql server express 2005
    je dois faire un formulaire avec 2 checkedlistbox, la premiere se remplissant par la base sql
    et la seconde doit se remplir avec la premiere.

    je m'explique :

    la premiere (que je nommerais clb1) recupere les données d'une base sql (ca c'est deja reglé )
    la clb2 (l'autre donc) doit se remplir avec les items cochés de la clb1 sur click d'un bouton "ajouter"...

    le probleme c'est que je n'ai pas accès au "valuemember" comme pour les combobox, que j'aurai utilisé pour
    pour afficher le reste, j'ai essayé plusieurs trucs comme afficher le selectedindices checkeditem ...
    le seul qui a fonctionné a peu près c'est quand j'ai afficher le clb1.text mais il n'affiche que l'élément en surbrillance
    et si je coche 3 cases il y aura donc 3 fois le meme affichage

    si quelqu'un de bien veillant voulait m'aider je lui en serait reconnaissant

  2. #2
    Membre régulier Avatar de guigouz
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 84
    Points : 102
    Points
    102
    Par défaut
    Il me semble que tu peux récupérer directement les items de ta première listView et les passer dans la seconde.
    Je n'ai pas le temps de tester mais ça pourrait ressembler à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for (int i = 0; i <= maListViewA.Items.Count - 1; i++)
    {
           if(maListViewA.Items[i].Checked)
           {
                  monItem = maListViewA.Items[i];
                  maListViewA.Items[i].Remove(); // Je crois que c'est "obligatoire" (ne sais pas pk)
                  maListViewB.Items.Add(monItem);
           }
    }
    Voila je ne suis pas sur que ça marche et j'espère avoir répondu à ta question.
    Bonne continuation !

    Guigouz

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    merci mais j'arrive pas a me servir de ton code

    petite precision : quand je teste differents code
    en les affichant avec un messagebox il me dit system.data.datarowview
    je peux afficher le displaymember contenu dans la premiere checkedlistbox mais je peux en voir qu'un seul a la fois, si j'en coche 2 ou 3 ben y aura autant de messagebox avec le meme displaymember affiché

  4. #4
    Membre actif Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Points : 284
    Points
    284
    Par défaut
    Tu peux voir du coté CheckedItems

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach (object itemChecked in checkedListBox1.CheckedItems)
                {
     
                    checkedListBox2.Items.Add(itemChecked);
                }

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    j'ai essayé mais ca m'ecrit system.data.datarowview ...

    quelqu'un sait pourquoi ?

    sinon y a pas une autre maniere moins compliquée pour faire l'equivalent ?

    le principe c'est que j'ai une liste de membres, je dois en inscrire quelques uns à une activité sélectionnée auparavant, je sais pas si c'est compréhensible et si c'est le cas je m'en excuse

  6. #6
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par maxland Voir le message
    j'ai essayé mais ca m'ecrit system.data.datarowview ...
    salut,

    Erreur à la compilation ? à l'exécution ? Tu peux donner le message exact ?
    ಠ_ಠ

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    quand je clique sur une ou plusieurs cases et que je clique sur le bouton ajouter contenant la fonction qui recupere les selections et qui les affiche dans la 2eme checkedlistbox, au lieu d'avoir le texte des cases cochées j'ai le message "System.Data.DataRowView" dans la 2eme checkedlistbox (une ou plusieurs fois)

    je sais pas si c'est assez clair, sinon je peux vous faire des screens

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    voilà, donc j'ai fait un screenshot de mon formulaire.
    d'abord je selectionne 2 cases, je clique sur le bouton ajouter qui contient cette fontion (sur clique du bouton) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach (object itemChecked in ListeMembres.CheckedItems)
                {
     
                    ListeMembresInscrits.Items.Add(itemChecked);
                }
    et j'obtiens ca :



    ca doit venir de la fonction en fait, mais je sais pas comment extraire le texte contenu dans les elements cochés de la checkedlistbox

  9. #9
    Membre actif Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Points : 284
    Points
    284
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    foreach(object obj in checkBoxList1.CheckedItems)
    {
         if(obj is DataRowView)
              this.checkBoxList2.Items.Add(((DataRowView)obj).Row[this.checkBoxList2.DisplayMember].ToString());
     
     
    }

  10. #10
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Ton deuxième contrôle a-t-il besoin d'être une CheckedlistBox , une ListView devrait suffire, non ? Puisque tu n'as pas l'air de te servir des checkbox de ce contrôle.
    ಠ_ಠ

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    ok ca marche super, merci beaucoup les gars

    le seul probleme c'est que je peux pas limiter a une seule inscription, j'arrive pas à tester si les objets sont deja dans la 2eme liste pour pas avoir de doublons, je suis désolé mais je suis une quiche en c#

    sinon pour le listview j'ai pas testé, j'ai besoin de recuperer les objets de la 2eme liste pour les envoyer dans la base sql avec le bouton valider

  12. #12
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    Pour eviter les doublons, t'as qu'a teste si ce que t'ajoute est pas deja dans la liste en la parcourant...

  13. #13
    Membre actif Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Points : 284
    Points
    284
    Par défaut
    //Le nom de la colonne a afficher
    String colName = this.checkedListBox1.DisplayMember;

    foreach(object obj in checkBoxList1.CheckedItems)
    {
    if(obj is DataRowView)
    {
    //unboxing du DataRowView
    DataRowView row = obj as DataRowView;

    //Valeur à afficher
    String currentValue = row.Row[colName].ToString();

    //Tester si la valeur existe déja dans la 2eme list
    if( !this.checkBoxList2.Items.Contains(currentValue))
    {
    this.checkBoxList2.Items.Add(currentValue);
    }


    }

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    alors là respect

    merci mec t'assures grave ca marche impec

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 22/06/2012, 12h12
  2. [Batch] Créer une chaine à partir d'une variable et d'une autre chaine
    Par mlle lain dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 10/11/2009, 16h26
  3. Réponses: 2
    Dernier message: 05/01/2009, 12h45
  4. Réponses: 5
    Dernier message: 22/05/2008, 14h42
  5. Réponses: 4
    Dernier message: 04/06/2007, 10h14

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