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 :

[C#][ADO]Problème de propritéré SelectedItem du contrôle ComboBox : System.Data.DataRowView


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de TheBlue
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 167
    Par défaut [C#][ADO]Problème de propritéré SelectedItem du contrôle ComboBox : System.Data.DataRowView
    Bonjour.
    J'ai un petit problème quand je veux récupérer la valeur de SelectedItem d'un ComboBox lié à une BD SQLServer, en fait j'obtiens System.Data.DataRowView à la place de la valeur
    Pour avoir une petite idée sur le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    cnx = new SqlConnection("bla bla bla");
    cmd = new SqlCommand("select * from bureau", cnx); // bureau : Table à 2 champs : id et libelle
    da = new SqlDataAdapter(cmd);
    ds = new DataSet();
    ds.Clear(); // dataSet
    da.Fill(ds, "bureau");
    comboBox1.DataSource = ds.Tables["bureau"];
    comboBox1.ValueMember = "id";
    comboBox1.DisplayMember = "libelle";
    Par contre quand je désactive cet ensemble de ligne et je remplie le ComboBox par la méthode add
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    comboBox1.Items.Add("a");
    comboBox1.Items.Add("b");
    comboBox1.Items.Add("c");
    Je peux accéder facilement à la valeur de SelectedItem.
    Que dois-je faire ?
    Merci

  2. #2
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    Bonjour toideveloppeur

    pour récuperer la valeur du combobox, essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    comboBox1.SelectedValue;  // pour la valeur "id"
     
    comboBox1.Text;      // pour le texte "libelle"

  3. #3
    Membre confirmé Avatar de TheBlue
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 167
    Par défaut
    Bonjour Mr Redouane.
    La propriété Text même si elle parait tout a fait logique ne donne rien (un champs vide).
    Voilà tout ce que j'ai pour voir:

    Ce que contient le ComboBox :


    Code d'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void button1_Click(object sender, EventArgs e)
    {
    	MessageBox.Show("SelectedIndex : " + cbBureau.SelectedIndex + "\nSelectedItem : " + cbBureau.SelectedItem + "\nSelectedText : " + cbBureau.SelectedText + "\nSelectedValue : " + cbBureau.SelectedValue);
    }
    Résultat affiché

  4. #4
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    ce n'est pas SelectedText, mais plutot :
    au lieu de : cbBureau.SelectedText

  5. #5
    Membre confirmé Avatar de TheBlue
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 167
    Par défaut
    Ah d'accord ! Et pourtant tu me las déjà signalé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    comboBox1.Text;      // pour le texte "libelle"
    Il fait si chaud, c'est pour cela que je perds la concentration je crois
    Merci fréro

  6. #6
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    je t'en prie mon ami

  7. #7
    Inactif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Algérie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 59
    Par défaut Utilise le cast
    La raison pour laquelle s'affiche toujours le type c'est parce que le résultat de SelectedValue est un objet donc tu ne peux pas savoir à l'avance si il contient une valeur ou même si il représente un item de la collection du ComboBox.
    pour régler ton problème il te suffit d'utiliser un cast. voici un exemple qui fonctionne.

    Pour la connection et initialisation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    OleDbConnection Con = new OleDbConnection(ConnectionString);
                OleDbDataAdapter da = new OleDbDataAdapter("Select * from Bureau", Con);
                DataSet ds = new DataSet();
                da.Fill(ds);
                comboBox1.DataSource = ds.Tables[0].DefaultView;
                comboBox1.DisplayMember = "libelle";
                comboBox1.ValueMember = "id";
    et pour la manipulation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {   MessageBox.Show(((DataRowView)comboBox1.SelectedItem).Row["id"].ToString());
            }
    j'espère que ça répond à ta question.
    Bon courage.

  8. #8
    Membre confirmé Avatar de TheBlue
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 167
    Par défaut
    Oui c'était exactement la raison buxus, ça marche à merveille maintenant et je peux considérer que le problème est résolu.
    Voilà le code que j'ai écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            private void button1_Click(object sender, EventArgs e)
            {
                MessageBox.Show("SelectedIndex : " + cbBureau.SelectedIndex + "\nSelectedItem : " + ((DataRowView)cbBureau.SelectedItem).Row["libelle"].ToString() + "\nText : " + cbBureau.Text + "\nSelectedValue : " + cbBureau.SelectedValue);
            }
    Et le résultat que ça a donné :
    Merci beaucoup les amis.

    SimO TM

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/04/2006, 16h16
  2. [ADO] Problème d'ajout d'espaces....
    Par charliejo dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/03/2006, 17h38
  3. [Oracle 8i et ADO] Problème de chaine de connexion
    Par hrezzaz dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/10/2005, 17h52
  4. [ADO] Problème avec MoveLast et compagnie
    Par Odulo dans le forum Access
    Réponses: 2
    Dernier message: 28/09/2005, 09h27
  5. Conversion bde --> ado (problèmes ado)
    Par Zoilus dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/10/2004, 14h48

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