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 :

preselectionner une valeur dans un combobox lié à une source de données


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Par défaut preselectionner une valeur dans un combobox lié à une source de données
    j'ai un combobox que j'ai lié par le design à une source de données (une table dans une BD sql Server)
    Ce que je souhaite est d'avoir une valeur qui soit sélectionnée au chargement de ma fenêtre.
    comboBox1.SelectedValue=id; --> ne me donne rien
    rq:id correspond à value member dans le databinding

  2. #2
    Membre très actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Par défaut
    Salut,
    Normalement, si tu fais le chargement de la combo avant le show de la form celà doit pouvoir marcher.....Montre le code

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Par défaut Bouts de code
    Merci pour ta réponse fally!
    Voici mon code initial qui n'avait aucun effet sur selected value

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //variables
    private Lecteur lecteur;
    private int idSite;
     
    //constructeur
    public Form_Changer_Site (Lecteur lecteur)
            {
                InitializeComponent();//complètement gérée par le designer
                this.lecteur = lecteur;
                comboBoxSites.SelectedValue=lecteur.idSite ;
     
            }

    Normalement, si tu fais le chargement de la combo avant le show de la form celà doit pouvoir marcher
    j'ai essayé de changer le code en séparant l'initialisation du comboBox de la méthode InitializeComponent();

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //variables
    private Lecteur lecteur;
    private int idSite;
     
    //constructeur
    public Form_Changer_Site (Lecteur lecteur)
            {
                this.lecteur = lecteur;
                initialiZeCombo();
                comboBoxSites.SelectedValue = this.lecteur.idSite;
                InitializeComponent();
                this.lecteur = lecteur;
                comboBoxSites.SelectedValue=lecteur.idSite ;            
            }
    la methode initialiZeCombo()
    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
    //j'ai réalisé cette méthode en faisant du couper/coller des parties de code 
    //qui concerne le comboBox à partir du InitializeComponent()
    private void initialiZeCombo()
            {
                this.components = new System.ComponentModel.Container();
                this.comboBoxSites = new System.Windows.Forms.ComboBox();
     
                //initialisation des composants connexion base de données
                //...
                //...
     
                // 
                // comboBoxSites
                // 
                this.comboBoxSites.DataSource = this.siteBindingSource;
                this.comboBoxSites.DisplayMember = "nom_site";
                this.comboBoxSites.FormattingEnabled = true;
                this.comboBoxSites.Location = new System.Drawing.Point(105, 118);
                this.comboBoxSites.Name = "comboBoxSites";
                this.comboBoxSites.Size = new System.Drawing.Size(121, 21);
                this.comboBoxSites.TabIndex = 2;
                this.comboBoxSites.ValueMember = "id_site";
                this.comboBoxSites.SelectionChangeCommitted += new System.EventHandler(this.comboBoxSites_SelectionChangeCommitted);
            }
    même avec ceci aucun effet sur selected value.
    je me demande si je n'ai pas loupé qlq chose en faisant la liaison des données:
    this.comboBoxSites.DisplayMember = "nom_site";
    this.comboBoxSites.ValueMember = "id_site";

  4. #4
    Membre averti
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Par défaut ??
    en faisant des test sur comboBox1.Items dans plusieurs endroits avec ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach (object o in comboBox1.Items)
                {
                    DataRowView drv = (DataRowView)o ;//car mes items sont de type DataRowView
                    label3.Text = label3.Text + drv.Row[0].ToString()+"  "+drv.Row[1].ToString()+"\n";
                }
    j'ai constaté que je ne peux afficher la liste des items qu'au niveau de form.load (impossible au niveau du constructeur!)
    quelqu'un sait à quel moment la liste des items du combobox est remplie (quand il est liée à une datasource)?
    y a t-il un code qui s'exécute entre l'appel du constructeur d'une Form et sa méthode load

  5. #5
    Membre averti
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Par défaut peut être une solution
    j'ai constaté que je ne peux afficher la liste des items qu'au niveau de form.load (impossible au niveau du constructeur!)
    après ce constat et après plusieurs essais j'ai ce je veux.
    mais je ne sais pas si c'est la meilleure solution mais je la poste peut être elle sera utile pour quelqu'un d'autre.

    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
    private void Form_Changer_Site_Load(object sender, EventArgs e)
            {
                //pour présélectionner un item du comboBox je parcours la liste des items 
                //et je teste s'il s'agit de celui que je veux selectionner.
                //si oui, j'affecte cet item à la propriété selectedItem              
     
                Int64 id = (Int64)lecteur.idSite;//la valeur que je veux sélectionner
                foreach (object o in comboBoxSites.Items)
                {
                    DataRowView drv = (DataRowView)o;//o item courant
                    Int64 iddr = (Int64)drv.Row[0];//recupère l'id dd l'item courant
                    if (iddr==id)
                    {
                        comboBoxSites.SelectedItem = o;
                        break;
                    }
     
                }
                label1.Text = comboBoxSites.SelectedValue.ToString();//pour s'assurer que ça a bien marché
     
     
            }
    Vos suggestions pour amélioration sont vraiment les bienvenues car je ne suis pas tout à fait satisfaite de cette solution
    aussi, je m'nterroge toujours à ce propos:
    quelqu'un sait à quel moment la liste des items du combobox est remplie (quand il est liée à une datasource)?
    y a t-il un code qui s'exécute entre l'appel du constructeur d'une Form et sa méthode load

  6. #6
    Membre très actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Par défaut
    Avec quelles données charges-tu ta combo? Si c'est d'une base de donées, tu écris une méthode qui se charge de "charger" ta combo et dans cette méthode tu spécifies la SelectedValue et la ValueMember de ta combo.
    Tu appelles cette méthode dans le constructeur de ta form et paf au chargement de ta form tu verras ta combo bien remplie

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

Discussions similaires

  1. [XL-2000] Remplir une valeur dans cellule à partir d'une valeur precise d'un fichier texte
    Par cactus666 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/01/2010, 10h31
  2. Vérifier l'existence d'une valeur dans un ComboBox
    Par logiciel_const dans le forum Composants VCL
    Réponses: 6
    Dernier message: 08/03/2008, 09h07
  3. [VB2008E] Où stocker une valeur dans les items d'une combobox ?
    Par dsolheid dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/01/2008, 19h14
  4. Récupérer une valeur dans un champ d'une autre table
    Par Kareg dans le forum Modélisation
    Réponses: 15
    Dernier message: 24/10/2007, 14h16
  5. [ComboBox] Retourner une valeur différente de ComboBox.Text
    Par nicolas.pied dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/02/2007, 20h01

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