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 :

Comment avoir la valeur de l'item sélectionné dans un Combobox ?


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 16
    Points : 23
    Points
    23
    Par défaut Comment avoir la valeur de l'item sélectionné dans un Combobox ?
    Bonjour tout le monde,

    je bloque sur l'utilisation des ComboBox liée à la base de données sql server, pour faire simple j'ai deux table maitre details
    la premiere SECTEUR(ID_SECTEUR: int; LIBELLE :nvarchar(100) )
    le deuxieme SOUS_SECTEURS (ID_SOUS_SECTEUR: int; LIBELLE : nvarchar(100), ID_SECT: int );
    dans le Load de ma form j'inititialse le premier combobox nomé ComboSecteur comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     ComboSecteur.DataSource = (dbs.SECTEURS.Select(p => new { ID= p.ID_SECTEUR, Secteur= p.LIBELLE }).ToList());
     ComboSecteur.DisplayMember = "Secteur";
     ComboSecteur.ValueMember = "ID";
    Dans la procédure de SelectedIndexChanged du ComboSecteur j'initialse et filtre les Items de de ComboSousSecteur comme suit :

    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
     
     private void ComboSecteur_SelectedIndexChanged(object sender, EventArgs e)
            {
                   if (this.ComboSecteur.Text != null)
                {
                  int SelectedSect = Convert.ToInt32(ComboSecteur.SelectedValue.ToString());
     
                  this.ComboSousSecteur.DataSource = dbs.SOUS_SECTEURS.Where(x => x.ID_SECTEUR== SelectedSect).Select(p => new { ID= p.ID_SOUS_SECTEUR, 
                  SousSecteur = p.LEBELLE_SOUS_SECTEUR }).ToList();
                  this.ComboSousSecteur.ValueMember = "ID";
                  this.ComboSousSecteur.DisplayMember = "SousSecteur";
                  this.ComboSousSecteur.Enabled = true;
                  this.ComboSecteur.BackColor = Color.Aquamarine;
                }
     
            }
    mais cela me revoie une exeption : format de la chaine d'entree incorrect sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     int SelectedSect = Convert.ToInt32(ComboSecteur.SelectedValue.ToString());
    j'ai changé la ligne par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      int SelectedSect = int.Parse(ComboSecteur.SelectedValue.ToString());
    mais toujours le même message d'erreur
    merci de m'éclairer

  2. #2
    Membre habitué
    Homme Profil pro
    Passioné ...
    Inscrit en
    Juillet 2020
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Passioné ...
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2020
    Messages : 145
    Points : 158
    Points
    158
    Par défaut
    Bonjour,

    L'emploi de la propriété SelectedItem à la place de SelectedValue permettrait de résoudre le problème ? As tu essayé ?

    Cordialement Denis

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 233
    Points : 336
    Points
    336
    Par défaut
    1 : Oublie les types anonymes (new { ID= p.ID_SECTEUR, Secteur= p.LIBELLE })

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ComboSecteur.DataSource = dbs.SECTEURS);
    ComboSecteur.DisplayMember = "ID_SECTEUR";
    ComboSecteur.ValueMember = "LIBELLE ";
    2 : Utilise le SelectedItem comme dit mon VDD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     private void ComboSecteur_SelectedIndexChanged(object sender, EventArgs e)
    {
           if (this.ComboSecteur.Text != null)
           {
                  SECTEUR selectedSecteur = ComboSecteur.SelectedItem;
     
                  this.ComboSousSecteur.DataSource = dbs.SOUS_SECTEURS.Where(x => x.ID_SECTEUR == selectedSecteur.ID_SECTEUR ));
                  this.ComboSousSecteur.ValueMember = "ID_SOUS_SECTEUR";
                  this.ComboSousSecteur.DisplayMember = "LEBELLE_SOUS_SECTEUR ";
                  this.ComboSousSecteur.Enabled = true;
                  this.ComboSecteur.BackColor = Color.Aquamarine;
          } 
    }
    ndlr : Sinon, tu peux utiliser les BindingSource pour ne pas avoir à appeler l'event SelectedIndexChanged
    "Hope for the best, but prepare for the worst."

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/03/2021, 17h39
  2. [XL-2016] Faire apparaître une nouvelle textbox en fonction de l'item sélectionné dans la combobox
    Par Sparfell29 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/06/2019, 14h03
  3. Réponses: 2
    Dernier message: 27/01/2009, 13h41
  4. Avoir une valeur associé à chaque item d'un TComboBox
    Par dimdidi dans le forum Composants VCL
    Réponses: 10
    Dernier message: 10/03/2006, 09h15
  5. Réponses: 1
    Dernier message: 31/07/2005, 17h44

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