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 :

remplir un combobox


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 59
    Par défaut remplir un combobox
    Bonjour à tous !

    Bon voilà, ça fait plusieurs heures que j'essaie de remplir une combobox avec un valuemember et un displaymember. Etant plutot adepte du vb.net, j'ai un peu de mal en c#.

    Voici mon code :

    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
     private void Frmlienclasse_Load(object sender, EventArgs e)
            {
               try
                {
                    connexion.ConnectionString = "Data Source=Baptiste-PC;Initial Catalog=GestionNotes;User=sa;Password=info";
                    connexion.Open();
                    string strRequete;
                    strRequete = "Exec afficherclasse";
                    SqlCommand pCommand = new SqlCommand(strRequete, connexion);
                    SqlDataReader pMyExecut = default(SqlDataReader);
                    pMyExecut = pCommand.ExecuteReader();
                    while (pMyExecut.Read())
                    {
                        //CBclasse.DataSource = ;
                        CBclasse.ValueMember = pMyExecut[0].ToString();
                        CBclasse.DisplayMember = pMyExecut[2].ToString();
                    }
                    pMyExecut.Close();
                    connexion.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Echec du chargement " + ex.Message);
                    connexion.Close();
                }
            }
    En me baladant sur plusieurs lien sur internet, j'ai compris qu'il fallait un datasource contenant les données de ma table. Mais je n'arrive pas à mettre en pratique celà.

    Pouvez-vous me donner un petit coup de main ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 220
    Par défaut
    A ta place je ferais un truc du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    **Ta connexion**
    SqlDataAdapter DTA = new SqlDataAdapter("Ta requete", Ta connexion);
    DataTable DTT = new DataTable();
    DTA.Fill(DTT);
    foreach(DataRow in DTT.Rows)
    {
           ComboBoxItem item = new ComboBoxItem();
           item.Text = DTT["nom de ta colonne"];
           item.Value = DTT["nom de ta colonne"];
           TaComboBox.Items.Add(item);
    }
    Il faut peut-être bidouiller si ca marche pas, j'ai pas vérifié mais à priori c'est la bonne méthode si je dis pas de bêtise

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 59
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SqlDataAdapter DTA = new SqlDataAdapter("Exec afficherclasse", connexion);
                    DataTable DTT = new DataTable();
                    DTA.Fill(DTT);
                    foreach(DataRow in DTT.Rows)
                    {
                           ComboBoxItem item = new ComboBoxItem();
                           item.Text = DTT["nom_classe"];
                           item.Value = DTT["id_classe"];
                           CBclasse.Items.Add(item);
                    }
    En modifiant ton code, j'ai plusieurs erreurs =/
    Tout d'abord, il ne veut pas du ComboBoxItem. L'erreur me dit qu'il manque peut-etre une clause using.
    Ensuite, je ne peux appliquer l'indexation au niveau du DTT["nom_classe"] et l'autre.
    Et enfin, La méthode surchargée correspondant le mieux à 'System.Windows.Forms.ComboBox.ObjectCollection.Add(object)' possède des arguments non valide.

    =/

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 220
    Par défaut
    Oui en fait autant pour moi, j'utilise des contrôles Télérik avec lesquels ca passe nikel mais dans ton cas tu ne peux pas.

    Il te faut remplacer ton datareader par un datatable comme sur mon exemple et ensuite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TaCombo.DataSource = DTT;
    TaCombo.DisplayMember = nomdetacolonne
    TaCombo.ValueMembber = nomdetacolonne
    Pas besoin de while ni rien, tu remplis ton DataTable avec le DataAdapter et ca devrait marcher

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 59
    Par défaut
    Il me jette pour le foreach (dataRow in DTT.Rows)
    Il me met
    Le type et l'identificateur sont tous deux requis dans une instruction foreach
    J'ai fait comme celà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SqlDataAdapter DTA = new SqlDataAdapter("Exec afficherclasse", connexion);
                    DataTable DTT = new DataTable();
                    DTA.Fill(DTT);
                    foreach (DataRow in DTT.Rows)
                    {
                        CBclasse.DataSource = DTT;
                        CBclasse.DisplayMember = DTT["nom_classe"];
                        CBclasse.ValueMember = DTT["id_classe"];
                    }
                    connexion.Close();

  6. #6
    Membre éprouvé Avatar de bibbi
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 113
    Par défaut
    Essaye:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach (DataRow dRow in DTT.Rows)

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

Discussions similaires

  1. [C#] Remplire un comboBox avec un fichier XML
    Par Roach dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/09/2005, 20h45
  2. 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
  3. [C#] Remplir une combobox avec le champs d'une table Access
    Par Damsou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/06/2005, 15h31
  4. [VB.NET] Remplir une ComboBox avec une requete sql
    Par graphicsxp dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/03/2005, 15h29
  5. Réponses: 2
    Dernier message: 26/07/2004, 13h34

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