none
recuperer la valeur SelectedValue de mon combobox RRS feed

  • Question

  • bonjour,

    je voudrais recupere la valeur "SelectedValue" de mon combobox.

    en effet,

    je remplis mon combobox de la maniere suivante

    DataSet dstypedemande = UtilsLoadParametrage.Load_Parametre(8); unForm.cbTypDde.Items.Clear(); for (int k = 0; k <= dstypedemande.Tables[0].Rows.Count - 1; k++) { unForm.cbTypDde.ValueMember = dstypedemande.Tables[0].Columns[0].ToString(); "ici je voudrais que le valuemember

    soit la premiere colonne de ma table " unForm.cbTypDde.Items.Add(dstypedemande.Tables[0].Rows[k][1].ToString()); }

    seulement lors de l appel sur l evenement select indexchanged,

            private void cbTyCa_SelectedIndexChanged(object sender, EventArgs e)
            {
                string test = cbTypDde.SelectedValue.ToString();
                MessageBox.Show(test); 
            }

    j ai  l erreur suivante sur le selectedvalue.:

    {"Object reference not set to an instance of an object."}

    comment corriger mon erreur?

    PS: le combobox est bien charge de toutes mes valeurs...

    Merci


    Marcelle NGOUNOU

    dimanche 6 mai 2012 05:02

Réponses

  • Bonjour,

    Il faut affectez à la propriété DataSource du ComboBox un BindingSource.
    Il ne faut pas remplir le ComboBox "à la main" (via une boucle for).

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    • Marqué comme réponse marclas mercredi 9 mai 2012 05:16
    mardi 8 mai 2012 21:42
    Modérateur
  • bonjour Gilles,

    effectivement,

    je venais en fais specifier que j avais oublie de renseigner la propriete datasource de mon combobox...

    donc il fallait faire apres

    unForm.cbTypDde.ValueMember = "Nom"

    unForm.cbTypDde.datasource=Mondatasource;

    mince ceci m a pris 3 jours....c pas bien d etre distrait....

    et effectivement ne pas remplir son combo a l aide d une boucle for.... :)

    Merci et desole ....

    Merci


    Marcelle NGOUNOU



    • Marqué comme réponse marclas mercredi 9 mai 2012 05:17
    • Modifié marclas mercredi 9 mai 2012 05:28
    mercredi 9 mai 2012 05:15

Toutes les réponses

  • Bonjour,

    La propriété "ValueMember" doit contenir le nom de la colonne qui contient la valeur à récupérer dans votre DataTable.
    Par exemple, si votre DataTable contient deux colonnes Nom et Age et que vous souhaitez récupérer la valeur qui est contenu dans Nom, vous devez écrire le code suivant (pas dans une boucle !) :

    unForm.cbTypDde.ValueMember = "Nom"

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    lundi 7 mai 2012 07:20
    Modérateur
  • bonjour Gilles,

    Merci , je me disais bien qu'il y avait une erreur quelque part.

    Ok je corrige et reviens

    Merci


    Marcelle NGOUNOU

    lundi 7 mai 2012 09:26
  • bonjour gilles, j ai reecris mon instruction ainsi DataSet dstypedemande = UtilsLoadParametrage.Load_Parametre(8); unForm.cbTypDde.Items.Clear(); unForm.cbTypDde.ValueMember = dstypedemande.Tables[0].Columns["DOS_TYPE"].ToString(); for (int l = 0; l <= dstypedemande.Tables[0].Rows.Count - 1; l++) { unForm.cbTypDde.Items.Add(dstypedemande.Tables[0].Rows[l][1].ToString()); } a la trace le valuemember est bien renseigne; ceci se fait ds un module lorsque je fait l'appel , dans le formulaire appellant j ai toujours mon erreur nullexception// le valuemember est toujours a null malgre le choix dans le combobox ????????????? cordialement

    Marcelle NGOUNOU

    lundi 7 mai 2012 09:58
  • Bonjour,

    Il faut affectez à la propriété DataSource du ComboBox un BindingSource.
    Il ne faut pas remplir le ComboBox "à la main" (via une boucle for).

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    • Marqué comme réponse marclas mercredi 9 mai 2012 05:16
    mardi 8 mai 2012 21:42
    Modérateur
  • bonjour Gilles,

    effectivement,

    je venais en fais specifier que j avais oublie de renseigner la propriete datasource de mon combobox...

    donc il fallait faire apres

    unForm.cbTypDde.ValueMember = "Nom"

    unForm.cbTypDde.datasource=Mondatasource;

    mince ceci m a pris 3 jours....c pas bien d etre distrait....

    et effectivement ne pas remplir son combo a l aide d une boucle for.... :)

    Merci et desole ....

    Merci


    Marcelle NGOUNOU



    • Marqué comme réponse marclas mercredi 9 mai 2012 05:17
    • Modifié marclas mercredi 9 mai 2012 05:28
    mercredi 9 mai 2012 05:15
  • Bonsoir Gilles Désolé mais je pense pas que vos post répondent fondamentalement à la question de Marcelle NGOUNOU

    Le problème c'est pas de remplir la comboBox à la main ou pas. c'est de pouvoir récupérer la valeur plus tard.

    je le dis parce que avant de venir  sur cette question de ce forum moi j'avais deja fais un remplissage automatique comme vous l'avez dis et je rencontrais deja le problème souligné par Marcelle.

    s'il vous plait penchez vous e,core sur la question.

    Merci

    jeudi 3 mars 2016 14:22