Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre régulier
    Inscrit en
    mai 2002
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 208
    Points : 89
    Points
    89

    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 :
    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 :
    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 : 33
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : juillet 2003
    Messages : 197
    Points : 76
    Points
    76

    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 régulier
    Inscrit en
    mai 2002
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 208
    Points : 89
    Points
    89

    Par défaut

    Ok ça marche!!


    Voici donc ma classe:
    Code :
    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 :
    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 :
    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
    Futur 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 : 15
    Points
    15

    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 :
    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 éclairé
    Homme Profil pro Ludovic FRANTZ
    Développeur informatique
    Inscrit en
    septembre 2008
    Messages
    335
    Détails du profil
    Informations personnelles :
    Nom : Homme Ludovic FRANTZ
    Âge : 28
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : septembre 2008
    Messages : 335
    Points : 391
    Points
    391

    Par défaut

    Ou plus simple tu ulise la propriété datasource de ta combo

    Code :
    1
    2
    3
    4
     
    maCombo.ValueMember = "SE_NUMERO";
    maCombo.DisplayMember = "SE_NOM";
    maCombo.DataSource = maDataTable;

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •