Recuperer objet d'une listview

chrisARA Messages postés 7 Date d'inscription mercredi 18 janvier 2012 Statut Membre Dernière intervention 17 juin 2012 - 16 juin 2012 à 20:38
chrisARA Messages postés 7 Date d'inscription mercredi 18 janvier 2012 Statut Membre Dernière intervention 17 juin 2012 - 17 juin 2012 à 01:11
Bonsoir a tous,

j'utilise actuellement une Listview que je charge a partir d'une collection d'objet avec un listviewItem. habituellement j'utilise une listbox avec un Datasource sur ma collection et display member et pour recuperer l'objet qui est selectionner j'utilise un cast. exemple (class)cl =(class)Listbox.selectedItem et je recupere mon objet.
Pour revenir à mon probleme, c'est qu'avec une listview je ne sais absolument pas comment effectuer ce procédé et si cela et même possible.

Cordialement

7 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
16 juin 2012 à 20:45
Normalement le code ne devrait pas être vraiment différent avec une listview ou une listbox



[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0
chrisARA Messages postés 7 Date d'inscription mercredi 18 janvier 2012 Statut Membre Dernière intervention 17 juin 2012
16 juin 2012 à 21:00
Malheuresement non, je n'ai pas la la propriété Datasource avec listview mais databindings ce qui n'est pas pareil.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
16 juin 2012 à 21:27
Ok, d'accord, j'avais lu un peu rapidement et donc pas compris ton problème.

Le contrôle Listview est un contrôle bien plus complexe que la listbox. Il ne peut probablement pas être directement lié à une source de données, c'est pour cela que la propriété n'existe pas.

Le listview fonctionne avec un système d'items et de subitems, je ne suis pas certain que tu puisse y ajouter des objets (faudrait faire des essais). Je pense que tu ne peux ajouter que par exemple le nom de ton objet en item, et certaines de ses propriétés en subitem. Il faudrait garder, je pense, tes objets dans une collection à coté pour pouvoir les récupérer

C'est pas un composant que j'utilise souvent car il n'est pas très souple, je trouve.



[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0
chrisARA Messages postés 7 Date d'inscription mercredi 18 janvier 2012 Statut Membre Dernière intervention 17 juin 2012
16 juin 2012 à 21:33
Oui exactement il n'est pas trés souple contrairement à la listbox, le seul probleme avec les subitems et que par la suite pour pouvoir les afficher ailleurs il faut que j’insère toutes les propriétés de mon objet dans la listview ce qui n'est pas forcement pratique et qui rendrais ma listview incompréhensible pour l'utilisateur.

Merci pour ta reponse
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
16 juin 2012 à 21:58
Oui, ou comme je disais, n'afficher que certaines propriétés et garder tes objets dans une liste ou collection à coté pour pouvoir venir récupérer l'objet réel à ce qui est sélectionné dans la listview, avec par exemple un système de clé basé sur le hashcode de l'objet


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0
chrisARA Messages postés 7 Date d'inscription mercredi 18 janvier 2012 Statut Membre Dernière intervention 17 juin 2012
17 juin 2012 à 00:36
Tu aurais un exemple pour pouvoir récupérer l'objet réel de ce qui est sélectionné dans la listview?
0
chrisARA Messages postés 7 Date d'inscription mercredi 18 janvier 2012 Statut Membre Dernière intervention 17 juin 2012
17 juin 2012 à 01:11
Finalement avec plusiers j'ai trouvé la solution qui me permet de recuperer l'objet avec un Item.tag. pour ce que sa intéresse voici un exemple:

//pour remplir la listview
 listViewStation.Items.Clear();
            int i = 0;
            foreach(object obj in list<objet>)
            {
                // a titre d'exemple
                ListViewItem item = new ListViewItem(new stri{obj.properties,obj.name}); 
                item.Tag = sta;
                listViewStation.Items.Add(item);
                i++;
            }
//et enfin pour le recuperer au click de la listview
  private void listViewStation_MouseClick(object sender, MouseEventArgs e)
        {
            ListView.SelectedListViewItemCollection it = this.listViewStation.SelectedItems;
            foreach (ListViewItem item in it)
            {
                Objet obj = (objet)item.Tag;
                //et on effectue le traitement avec l'objet

            }
        }


Cette solution est fonctionnel :)
0
Rejoignez-nous