Comment adapter un valuemember ?

Résolu
Moundir76 Messages postés 286 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014 - 15 nov. 2011 à 15:42
Moundir76 Messages postés 286 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014 - 16 nov. 2011 à 16:01
Bonjour,

Je remplis actuellement une listbox à l'aide d'une connexion à ma base de données comme ceci avec un curseur

 MaConnexion.Open()
        Dim CmdSelectClients As New SqlCommand("SELECT * FROM CLIENT ORDER BY NOM", MaConnexion)

        Dim MonCurseur As SqlDataReader = CmdSelectClients.ExecuteReader
        While MonCurseur.Read()
            lstClients.Items.Add(MonCurseur.GetString(1) + "  " + MonCurseur.GetString(2))
            

        End While

        MonCurseur.Close()
        MaConnexion.Close()


Cependant je souhaiterais mettre dans mon valuemember le "MonCurseur.GetString(0)", afin qu'il n’apparaisse pas dans ma listbox mais lorsque je sélectionne, je puisse avoir la donnée du valuemember associée a l'item selectionné.

Je ne sais pas si j'ai été assez clair.

Cordialement

3 réponses

Moundir76 Messages postés 286 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
16 nov. 2011 à 16:01
Voici la solution que j'ai trouvée et qui fonctionne très bien :

Dim dt As New DataTable()


        Dim daTable As New SqlDataAdapter(CmdSelectClients)

        lstClients.Items.Clear()
        MaConnexion.Open()
        daTable.Fill(dt)


        lstClients.DataSource = dt
        lstClients.DisplayMember = "nom_prenom"
        lstClients.ValueMember = "idClient"


        MaConnexion.Close()
3
Utilisateur anonyme
15 nov. 2011 à 19:45
Bonsoir,

Personnellement au lieu d'une ListBox, j'utiliserais une ListView (plus riche en options) qui, pour chaque item, te donnes la possibilité de stocker un élément de type Object (classe, string, etc...) à l'aide de la propriété Tag de l'item.

Lors de sa récupération par l'événement ItemSelectionChanged, il te suffira de caster (DirectCast) la valeur du Tag dans le type approprié.

Note : l'événement ItemSelectionChanged (qui s'exécute 2 fois si un autre item est déjà sélectionné) nécessite un test de la propriété IsSelected de l'argument (e) de l'événement, afin de savoir s'il s'agit de l'item sélectionné ou de celui qui est abandonné par la sélection.

Bonne soirée.
0
Moundir76 Messages postés 286 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
16 nov. 2011 à 14:48
Bonsoir,

Merci pour ta réponse, cependant je ne dois absolument passer par une ListBox ...
J'ai essayé de tenter de passer par une collection, mais je n'ai pas réussi.
Si quelqu'un aurait une astuce je suis preneur !

Cordialement.
0