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

C# Discussion :

DataGridView et ComboBox [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 7
    Par défaut DataGridView et ComboBox
    Bonjour

    Je voudrais faire un truc qui me semble tout bête mais je bloque dessus depuis maintenant plusieurs heures...

    J'ai un DataGridView avec un colonne de type ComboBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataGridViewComboBoxColumn comboboxColumn = new DataGridViewComboBoxColumn();
    Ce comboxBox est remplit par une requête SQL grâce à un dataAdapter. Jusque là, ca fonctionne, j'arrive bien à voir ce qu'il y a dans ma table.

    Le problème : je voudrais que l'utilisateur puisse sélectionner un champs blanc ou un champs que j'aurai apellé "TOUS".

    J'ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                comboboxColumn.Items.Add("Tous");
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                comboboxColumn.Insert(0, "Tous");
    mais rien ne fonctionne...

    Quelqu'un aurait une idée?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 116
    Par défaut
    Il faut que tu ajoutes ces lignes, aux résultats de la requête.

    Le résultat de la requête servira ensuite de données pour la combobox.

    Lorsque tu exécutes ta requêtes, tu met sans doute le résultat, dans une liste, ou une table, un array?

    Après l’exécution de la requête, tu obtiendras donc ta liste, et là tu y ajoutes des données supplémentaires.

    Il serait plus facile de compléter la réponse, en voyant le code exécutant la requête.

  3. #3
    Membre régulier
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 7
    Par défaut
    Mon code est le suivant :
    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
     
                DataGridViewComboBoxColumn comboboxColumn= new DataGridViewComboBoxColumn();
     
                SetAlternateChoicesUsingDataSource(comboboxColumn);
     
                //Fait le lien entre le site de la table SITE et Site de la table Personne
                comboboxColumn.DataPropertyName = "Site";
     
                comboboxColumn.HeaderText = "Site";
                dataGridView1.Columns.Add(comboboxColumn);
     
           private void SetAlternateChoicesUsingDataSource(DataGridViewComboBoxColumn comboboxColumn)
            {
                {
                    comboboxColumn.DataSource = Connect.Populate("Select idsite as Site, nomsite from SITE");
                    comboboxColumn.ValueMember = "Site";
                    comboboxColumn.DisplayMember = "nomsite";
                }
            }
    Du coup, le résultat n'est pas stocké dans un liste/tableau mais directement dans le DataSource. Je comprend vraiment rien aux DataSource et DataAdapter pour l'instant, mais je pense pas que un truc comme ca pourrais marcher si ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
           private void SetAlternateChoicesUsingDataSource(DataGridViewComboBoxColumn comboboxColumn)
            {
                {
                    List<string> contenu = new List<string>();
                    contenu.Add(Connect.Populate("Select idsite as Site, nomsite from SITE"));
     
                    comboboxColumn.DataSource = contenu;
                    comboboxColumn.ValueMember = "Site";
                    comboboxColumn.DisplayMember = "nomsite";
                }
            }
    Edit :
    Quand l'utilisateur change la valeur du ComboBox, ca met à jour la valeur d'une autre colonne. Ici, il sélectionne le nom du site et : le numéro du site est rentré dans la colonne qui suit.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 116
    Par défaut
    Du coup, le résultat n'est pas stocké dans un liste/tableau mais directement dans le DataSource. Je comprend vraiment rien aux DataSource et DataAdapter pour l'instant, mais je pense pas que un truc comme ca pourrais marcher si ?
    Ca dépends de ce que renvoi ta méthode populate justement...

    Peut tu la montrer?

    Ca pourrait ressembler à ça, mais plus du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private void SetAlternateChoicesUsingDataSource(DataGridViewComboBoxColumn comboboxColumn)
            {
                {
                    List<TonObjet> contenu = new List<TonObjet>();
    //tu ne peux pas te contenter de string, car tu vas chercher plusieurs colonnes
                    contenu.Add(Connect.Populate("Select idsite as Site, nomsite from SITE"));
     
                    comboboxColumn.DataSource = contenu;
                    comboboxColumn.ValueMember = "Site";
                    comboboxColumn.DisplayMember = "nomsite";
                }
            }
    Quand l'utilisateur change la valeur du ComboBox, ca met à jour la valeur d'une autre colonne. Ici, il sélectionne le nom du site et : le numéro du site est rentré dans la colonne qui suit.
    Cela dépends aussi de comment tu défini ta combobox dans ta datagrid... Si tu as fait un code généraliste pour dire, que la combo est dans toutes les lignes, alors il ne saura pas faire la distinction : quelle ligne je suis en train de modifier, car toutes les lignes seront liées à la même combo, qui aura le même datasource...

    Il vaut mieux avoir un texte dans la colonne, faire apparaitre une combobox quand tu clique sur la case/la ligne, et ensuite, après avoir choisi, changer la valeur du texte affiché dans la colonne.

    J'ai conscience que c'est loin d'être clair, mais c'est assez compliqué à expliquer pour moi, pour une appli que je ne connais pas.

  5. #5
    Membre régulier
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 7
    Par défaut
    Merci déjà de m'aider Dynamès !!

    Ma méthode Populate :
    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
     
    public DataTable Populate(string Requete)
            {
                Connexion = new SqlConnection(....);
                Connexion.Open();
     
                Commande = new SqlCommand(Requete, Connexion);
                Adapter = new SqlDataAdapter();
                Adapter.SelectCommand = Commande;
     
                table = new DataTable();
                Adapter.Fill(table);
     
                return table;
            }
    Effectivement, mon combobox est par défault dans toutes les lignes de mon dataGrid. J'ai fait de cette manière car c'est la seule (enfin, surtout la première) manière que j'ai trouvé.
    Mais tous mes comboBox doivent être liés au même dataSource. Ils doivent tous contenir la même information. Par contre, j'arrive à récupérer le numéro de la ligne et de la colonne que je suis en train de modifier.

    tu ne peux pas te contenter de string, car tu vas chercher plusieurs colonnes
    Je savais bien que c'était pas possible avec String mais j'avais pas penser à faire une liste de type unObjet ^^'
    Je vais essayer de voir ca!!

    Merci

  6. #6
    Membre régulier
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 7
    Par défaut
    Je n'ai pas réussit à faire comme je pensais...

    J'ai ajouter tout bêtement une ligne dans ma table SITE avec une donnée "TOUS" ^^'

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/12/2007, 23h35
  2. DataGridView et ComboBox ReadOnly
    Par Mast3rMind dans le forum Windows Forms
    Réponses: 1
    Dernier message: 14/03/2007, 18h17
  3. [VS2005] Datagridview et combobox binding
    Par s.n.a.f.u dans le forum Visual Studio
    Réponses: 3
    Dernier message: 13/12/2006, 16h15
  4. [c#] DataGridView et Combobox, encore
    Par Jinroh77 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/07/2006, 09h47

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