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 :

Remplir une ComboBox depuis Sql Server


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Par défaut Remplir une ComboBox depuis Sql Server
    Bonjour,

    Je cherche à remplir une ComboBox à partir de données récupérées depuis Sql Server à l'aide du code ci-dessous:

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     private void BindClients()
            {
                string cnString = ConfigurationManager.ConnectionStrings["SqlServer"].ConnectionString;
                SqlConnection myConnection;
                myConnection = new SqlConnection(cnString);
                myConnection.Open();
     
                /* Efface le contenu de notre comboBox */
                cbxClient.Items.Clear();
     
                //Tu créés une liste générique
                List<ClientBO> liste = new List<ClientBO>();
     
                try
                {
                    SqlCommand myCommand = new SqlCommand("SELECT * FROM CLIENT", myConnection);
                    SqlDataReader Reader = myCommand.ExecuteReader();
     
                    while (Reader.Read())
                    {
                        ClientBO c = new ClientBO();
     
                        c.ClientId = (int)Reader["NumClient"];
                        c.ClientName = Reader["NomClient"].ToString();
     
                        //Ici tu remplis ta liste des objets que tu récupères
                        liste.Add(c);
                    }
     
                    Reader.Close();
     
                    //Ici tu remplis ton combobox
                    //tu indiques la valeur à récupérer (Nom de la propriété dans le BusinessObject)
                    cbxClient.ValueMember = "Id";
     
                    // tu indiques la valeur à afficher (Nom de la propriété dans le BusinessObject)
                    cbxClient.DisplayMember = "NomClient";
     
                    cbxClient.DataSource = liste;
     
                    MessageBox.Show("Listing fini", "OK");
                }
                catch (SqlException exp)
                {
                    MessageBox.Show(exp.Message);
                }
     
                finally
                {
                    myConnection.Close();
                }
     
            }
    mais aucune donnée ne s'affiche dans la ComboBox.

    Merci,

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    C'est probablement à cause des mauvaises valeurs des propriétés ValueMember et DisplayMember. Essaie avec :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cbxClient.ValueMember = "ClientId";
    cbxClient.DisplayMember = "ClientName";
    Ca doit toujours correspondre aux noms des propriétés de l'objet que tu bind.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Par défaut
    Merci pour votre réponse mais c'est pareil.

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    C'est bizarre il n'y a pas d'autre erreur ? Remplace SqlException par Exception dans le catch pour être sûr.

    Es-tu également sûr d'avoir des données dans la table CLIENT ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Par défaut
    Toujours pareil.

    Oui, il y a des données dans la table.

    J'appelle la procédure comme suit dans le Load de Form1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void Form1_Load(object sender, EventArgs e)
            {
                BindClients();
            }

  6. #6
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Bonjour,

    Comme l'a indiqué DotNetMatt, essayes de revoir la valeur de la propriété ValueMember car dans ton code, tu as mis ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while (Reader.Read())
    {
    	ClientBO c = new ClientBO();
    
    	c.ClientId = (int)Reader["NumClient"]; // ICI TU AS MIS NumClient
    	c.ClientName = Reader["NomClient"].ToString();
    
    	//Ici tu remplis ta liste des objets que tu récupères
    	liste.Add(c);
    }
    Cepedant au moment de remplir la combobox, tu as mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        //tu indiques la valeur à récupérer 
       // TU DOIS METTRE NumClient. pas non plus cbxClient.ValueMember = "ClientId" comme suggéré par DotNetMatt
        cbxClient.ValueMember = "Id";
    ce qui est incorrect. Fallait mettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        cbxClient.ValueMember = "NumClient";
    Si tu as déjà effectué toutes ces corrections et la combobox est toujours vide, pose un point d'arrêt sur la ligne while (Reader.Read()) et regarde si la boucle while est exécutée au moins un fois.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/06/2009, 10h53
  2. remplir une combobox depuis un recordset
    Par Zorgloub dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/02/2008, 16h12
  3. remplir une dropdownlist depuis une base sql
    Par Flamby38 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 30/01/2008, 19h30
  4. Réponses: 0
    Dernier message: 27/11/2007, 17h17
  5. [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

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