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 :

[c#][.NET 2.0] Datagrid avec 2 combobox liées entre elles


Sujet :

Windows Forms

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 17
    Par défaut [c#][.NET 2.0] Datagrid avec 2 combobox liées entre elles
    voila je sais pas si je vais etre clair mais je voudrais pouvoir mettre 2 combobox dans une datagrid en sachant que les données de la premiere combo sont dépendante de la valeur de la 2éme
    donc potentielement je peux avoir dans ma 1ere combo, 2 liste différentes suivant si je suis sur une ligne ou une autre de mon datagrid
    est ce que c'est possible et si oui comment?

    Espérant avoir été clair

  2. #2
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Je vois plus ou moins, le seul pb, c'est que je ne vois pas l'ordre exacte des opérations, donc impossible de t'aider.

    1. ListBox1:Change ==> Modify ListBox2
    ___& ListBox2:Change ==> Modify DataGrid

    2. DataGrid:Change ==> Modify ListBox1
    ___& ...

    Essaie de préciser...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 17
    Par défaut
    en gros j'ai une datagrid contenant une liste d'animaux et pour chacun d'entre eux j'ai une espece et une race mais la liste des races doit dépendre de l'espece

    donc datagrid contenant un combobox espece et un combo race

    Datagrid -> combo espece.on change -> modify combo race

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 238
    Par défaut
    Tu créer direct tes deux COmboBox mais la seconde tu la laisse vide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     DataGridViewComboBoxColumn comboxColonne;
     
    comboxColonne = new DataGridViewComboBoxColumn();
    comboxColonne.HeaderText = pNom;
    MonDataGridView.Columns.Insert(indice, comboxColonne);
    Pour la premiere tu y ajoute les différentes races :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    String[] Valeurs = { ..... };
    comboxColonne.Items.AddRange(Valeurs);
    Tu as des méthodes toutes faite pour transformer des collections en tableau de string. et ensuite tu gère l'evenement "CellValueChanged"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    private void DG_Detail_DP_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
         if (e.ColumnIndex == NumeroDeLaColonneDeMonPremierComboBox)
         {
                String[] Valeurs = { ..... };
                SecondComboxColonne.Items.AddRange(Valeurs); 
         }
    }
    Si j'ai bien compris ton problème je le reglerais comme ca

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 17
    Par défaut
    l'idée est bonne mais pour compliquer l'histoire (c'etait trop simple sinon ) les zones de listes sont remplies a partir de table pour contenir une valeur affichée et un index et donc c'est l'index qui est directement bindé avec la table des animaux dans le datagrid!!

    Je suis chiant hein??

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 17
    Par défaut
    personne pour m'aider??

    aller un chtit effort svp!!

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 19
    Par défaut
    salut,

    j'ai presque le meme probleme, et je voudrais savoir comment tu as fait pour résoudre le pbm qui va survenir immédiatement apres (et que j'ai) : tu n'as qu'une comboboxcolumn mais plusieurs listes de valeurs possibles.

    Exemple :

    Colonne 1 : ca bouge pas, tu as toujours une seule liste (par exemple A/B/C).
    Colonne 2 : tu as autant de listes possible que de valeurs de la colonne 1. Par exemple :
    A peut prendre 1 et 2
    B peut prendre 3 et 4
    et C peut prendre 1,2,3 ou 4

    Donc tu peux avoir :
    Colonne 1 | Colonne 2
    C | 1
    A | 2
    B | 3

    et la pbm : arrivé en B tu vas charger la liste "3,4" dans le colonne 2 alors que y'a deja "1" comme valeur (1ere ligne avec C) et "1" ne fait pas partie de la liste "3,4". Je ne sais pas si je suis tres clair, mais si tu as implémenté un datagridview avec deux DataGridViewComboBoxColumn interdépendante (du moins la 2eme dépend de la 1ere), tu as du avoir ce souci. Et j'aimerais bien connaitre ta solution. J'en ai envisagé deux, mais ca me parait bizarre qu'il n'y ait pas plus simple...

    Solution 1 : Quand on quitte la cellule de la colonne 2 on transforme la combo en textbox, comme ca il n'y a plus qu'un seul databinding sur la colonne 2 (et on retransforme en combo avec databinding sur la bonne liste qd on édite).
    Probleme : je n'arrive pas a changer le "type" de la cellule (de combo en textbox).

    Solution 2 : Mettre autant de "colonne 2" que de liste et cacher toutes les "colonnes 2" qui ne sont pas sur la celulle en cours.
    Problème : si on affiche 10 lignes, on va avoir 9 "colonnes 2" caché + 1 affiché donc 10 databinding...

    Edit : bon en fait j'ai trouvé, il ne faut pas toucher au bindingsource, mais plutot utilisé des vues filtrés et non filtrés (cf : http://forums.microsoft.com/msdn/sho...60076&siteid=1 ) et la ca marche impec.

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/06/2012, 16h02
  2. Combobox liées entre elles
    Par Psychoze dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/03/2008, 13h30
  3. Multiples double combobox indépendantes entre elles ??
    Par exway01 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 08/03/2006, 09h34
  4. gestion de 3 comboBox liés entre elles
    Par michaelbob dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/11/2005, 08h58
  5. Problème avec listes liées entre elles et bouton "précé
    Par Oluha dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/08/2005, 15h10

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