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 :

[C#] Utilisation de ComboBox


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 208
    Points : 136
    Points
    136
    Par défaut [C#] Utilisation de ComboBox
    Hi!

    Voilà, mon problème:
    dans les composants de VB6(notament le combobox) il existait une propriété ItemData très utile pour retrouver le numéro d'un enregistrement par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set oRecordset=New ADODB.Recordset
    oRecordset.Open "SELECT SE_NUMERO,SE_NOM FROM SERVICES", oConnexion, adOpenForwardOnly, adLockReadOnly
    While Not oRecordset.EOF
        ComboBox1.AddItem oRecordset.Fields("SE_NOM")
        ComboBox1.ItemData(ComboBox1.NewIndex) = oRecordset.Fields("SE_NUMERO")
         oRecordset.MoveNext
    Wend
    oRecordset.Close
    dans le combobox de C# je n'arrive pas à retrouver cette propriété ou quelque chose d'équivalent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SqlCommand oCommand=new SqlCommand("SELECT SE_NUMERO,SE_NOM FROM SERVICES",Global.oConnexion);
    SqlDataReader oDataReader;
    oDataReader=oCommand.ExecuteReader();
    while(oDataReader.Read())
    {
         ComboBox1.Items.Add(oDataReader.GetString(oDataReader.GetOrdinal("SE_NOM")));
    /*?????? équivalent de ItemData ?????*/
    }
    oDataReader.Close();
    quelqu'un peut m'expliquer la solution afin de retrouver le numero de l'enregistrement sélectionné par l'utilisateur (ici SE_NUMERO) :

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2003
    Messages : 197
    Points : 115
    Points
    115
    Par défaut
    Ben la technique que je connais pour resoudre ce genre de probleme est lm'utilisation de classe.

    tu crée une classe avec un identifiant, un libelle.

    tu fais une surcharge de la fonction tostring pour lui faire renvoyer le libelle.

    ensuiote tu alimentes ton combobox avec des instances de ta classe, grace a la surcharge du tostring, il affichera le libelle.

    je ne te founris pâs de code car je ne fais que du VB.NET et ne connias pas le C#

    @+

    Hirochirak
    -- Se lance dans l'asp.net 2.0 --

    Made In Taïwan

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 208
    Points : 136
    Points
    136
    Par défaut
    Ok ça marche!!


    Voici donc ma classe:
    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
     
    public class clsItem
    {
    	private string sItem;
    	private long lItemData;
     
    	public clsItem(long lItemData,string sItem)
    	{
    		this.lItemData=lItemData;
    		this.sItem=sItem;
    	}
     
    	public override string ToString()
    	{
    		return sItem;
    	}
     
    	public long ItemData
    	{
    		get{return lItemData;}
    	}
    }
    et la partie du programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SqlCommand oCommand=new SqlCommand("SELECT SE_NUMERO,SE_NOM FROM SERVICES",Global.oConnexion);
    SqlDataReader oDataReader;
    oDataReader=oCommand.ExecuteReader();
    while(oDataReader.Read())
    {
         ComboBox1.Items.Add(new clsItem(oDataReader.GetInt32(oDataReader.GetOrdinal("SE_NUMERO")),oDataReader.GetString(oDataReader.GetOrdinal("SE_NOM"))));
    }
    oDataReader.Close();
    et pour retrouver le numéro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void ComboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    	clsItem oNewItem=(clsItem)ComboBox1.SelectedItem;
    	MessageBox.Show(oNewItem.ItemData.ToString());
    }
    si quelqu'un connais une meilleure solution, elle est la bienvenue!!!

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Indonésie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 35
    Points
    35
    Par défaut Inserer les donnees provenant de la base de donnees dans un comboBox
    Bonjour, j'ai un autre solution.

    voici mon code:
    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
     
    /*DECLARATION DES OBJETS*/
    DataSet objDSArt = new DataSet("tArticles");
    Articles objArt = new Articles();
     
    /*TRAITEMENT*/
    objArt.loadArt(objDSArt);
    objDataViewManag = objDSArt.DefaultViewManager;
     
     
    for (int i = 0; i < objDSArt.Tables["tArticles"].Rows.Count; i++)
    {
         cmbBoxProdArtCmd.Items.Add(objDSArt.Tables["tArticles"].Rows[i]
                                                                                       ["nomArticle"]);
    }

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Points : 456
    Points
    456
    Par défaut
    Ou plus simple tu ulise la propriété datasource de ta combo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    maCombo.ValueMember = "SE_NUMERO";
    maCombo.DisplayMember = "SE_NOM";
    maCombo.DataSource = maDataTable;

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

Discussions similaires

  1. Utilisation listbox - combobox
    Par did103 dans le forum Word
    Réponses: 4
    Dernier message: 31/03/2008, 16h48
  2. Construire un critère de filtre en utilisant des ComboBox
    Par mary17 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 20/04/2007, 09h19
  3. utilisation de combobox
    Par fredppp dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 04/04/2007, 07h55
  4. Questions concernant l'utilisation des ComboBox
    Par philguio dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/01/2007, 11h26
  5. Utilisation de combobox et d'une animation flash
    Par naima2005 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 04/06/2006, 20h09

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