none
Définir manuellement les items d'une combobox RRS feed

  • Question

  • Bonjour,

    Dans mon programme, je dois afficher une combobox avec le nom et prénom de tous les clients de la base. L'utilisateur sélectionne le client et cela affiche ses coordonnées et la possibilité de créer une commande à son nom. Pour le moment, mes id de clients sont directement dans la combobox sauf que ce n'est pas beau, ni pratique pour la recherche de client (en tapant la première lettre par exemple). Donc, ma question, c'est de savoir comment faire pour mettre les id client à la place des items de la CB, ou à un tout autre endroit pourvu qu'il soit accessible facilement et utilisable pour mes requêtes futures ?

    J'ai essayer comme ceci (avec ce que j'ai vaguement compris de ce que j'ai trouvé sur les forums) :

    private void FormAjoutCde_Load(object sender, EventArgs e)
    {
    MySqlDataAdapter DAAjoutCde = new MySqlAdapter("Select idClient, CONCAT(nomC, ' ',prenomC) from client order by nomC", connexion);
    DataSet DSNom = new DataSet();
    DAAjoutCde.Fill(DSNom);
    CBNom.DataSource = DSNom;
    CBNom.DisplayMember = "CONCAT(nomC, ' ', prenomC)";
    CBNom.ValueMember = "idClient";
    }

    Mais ça ne me met que "System.Data.DataViewManagerListItemTypeDesctiptor" dans ma combobox et je ne suis même pas sur que mes id y soit... Je suis légèrement désespérée ^^

    Merci d'avance pour votre aide !

    M.

    lundi 4 février 2013 13:23

Réponses

  • J'ai fait un petit projet de test avec ce code, et il fonctionne bien:

    private void Form1_Load(object sender, EventArgs e) { DataSet DSNom = new DataSet(); DSNom.Tables.Add(new DataTable("Table")); DSNom.Tables[0].Columns.Add("idClient"); DSNom.Tables[0].Columns.Add("Nom"); DSNom.Tables [0].Rows.Add(new object[]{"1", "Nom 1"}); DSNom.Tables [0].Rows.Add(new object[]{"2", "Nom 2"}); DSNom.Tables[0].Rows.Add(new object[] {"3", "Nom 3" }); CBNom.DataSource=DSNom.Tables[0]; CBNom.DisplayMember = "Nom"; CBNom.ValueMember="idClient"; }

    Par contre, j'ai eu le même comportement que vous avez quand j’avais

      CBNom.DataSource=DSNom;

    Comme les lignes

         DSNom.Tables.Add(new DataTable("Table"));
                DSNom.Tables[0].Columns.Add("idClient");
                DSNom.Tables[0].Columns.Add("Nom");
                DSNom.Tables [0].Rows.Add(new object[]{"1", "Nom 1"});
                DSNom.Tables [0].Rows.Add(new object[]{"2", "Nom 2"});
                DSNom.Tables[0].Rows.Add(new object[] {"3", "Nom 3" });

    Sont équivalentes à votre DAAjoutCde.Fill(DSNom); je ne vois pas où est le problème.

    Pouvez-vous nous montrer encore une fois  votre code, je crois que vous avez manquée quelque chose?

    Merci


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    • Marqué comme réponse Aurel Bera mardi 5 février 2013 08:37
    lundi 4 février 2013 15:35
  • C'est bon : ça marche (en mettant DAAjoutCde.Fill(DSNom) et CBNom.DataSource = DSNom.Tables[0] ! maintenant je vais voir pour tous les autres (j'en ai au moins 5 comme ça dans mon programme) ! Si j'ai un problème je reviens ! En tout cas merci beaucoup !!

    M.

    • Marqué comme réponse Aurel Bera mardi 5 février 2013 08:37
    mardi 5 février 2013 08:25

Toutes les réponses