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 :

[C#]Retrouver un objet dans ListView


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 20
    Points
    20
    Par défaut [C#]Retrouver un objet dans ListView
    Bonjour,

    J'ai une liste déclarée comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private List<Employees> listEmp = new List<Employee>();
    Et j'affiche cette List dans la ListView suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                foreach (Employee emp in classeur.listEmp)
                {
                    ListViewItem lvItem = new ListViewItem();
                    lvItem.Text = emp.ToString();
     
                    empListView1.Items.Add(lvItem);
                }
    Tout fonctionne et ma liste est bien gérée et affichée dans la ListView.
    Maintenant j'aimerai récupérer l'objet Employee que l'utilisateur a sélectionné dans cette ListView. Le problème est que ce sont des strings qui sont affichés dans la ListView... Je voudrai remonter jusqu'à l'objet (Item ?).

    Comment faire ?

    Merci d'avance !

  2. #2
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 54
    Points : 68
    Points
    68
    Par défaut
    Ce que j'avais fait pour résoudre ce problème, c'était de créer une class qui hérite de ListViewItem.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        public class PersonListViewItem : ListViewItem
        {
             ...
            public Person(Person person)
            {
                _person = person;
                Text = ToString();
            }
             ...
        }
    Et après au lieu d'ajouter des ListViewItem à la ListView, j'ajoute ma nouvelle class.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.listView1.Items.Add(new PersonListViewItem(myPerson));
    Comme ça, lorsque j'essaie de récupérer le SelectedItem je le cast directement en Person et j'ai accès aux différentes propriétés.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PersonListViewItem person = this.listView1.SelectedItems[0] as PersonListViewItem ;
    Maintenant cette solution vaut ce que ça vaut. Je n'ai jamais chercher plus loin voir s'il y avait un autre moyen

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    plus simplement, tu peux affecter l'objet Employee au Tag du ListViewItem :
    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
                foreach (Employee emp in classeur.listEmp)
                {
                    ListViewItem lvItem = new ListViewItem();
                    lvItem.Text = emp.ToString();
                    lvItem.Tag = emp;
                    empListView1.Items.Add(lvItem);
                }
     
    ...
     
    private void empListView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (empListView1.SelectedItems.Count > 0)
        {
            Employee emp = empListView1.SelectedItems[0].Tag as Employee;
            if (emp != null)
            {
                ...
            }
        }
    }

  4. #4
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 54
    Points : 68
    Points
    68
    Par défaut
    Juste, j'avais complètement oublié le Tag

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    Merci beaucoup pour vos réponses, c'est très clair, et tout fonctionne à merveille ! J'ai essayé les deux solutions, mais je garde la seconde pour éviter de créer une nouvelle classe.

    Merci à tout les deux..

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    n'oublie pas le bouton ...

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

Discussions similaires

  1. [2.x] Retrouver l'objet User dans un form de FosUserBundle
    Par DanaKil dans le forum Symfony
    Réponses: 0
    Dernier message: 18/05/2015, 13h30
  2. tri d'un objet dans une listview => mélange d'indices
    Par punky_brooster dans le forum VB.NET
    Réponses: 1
    Dernier message: 03/02/2011, 16h57
  3. Sélectionner un objet dans une listview
    Par skypi dans le forum VB.NET
    Réponses: 0
    Dernier message: 13/08/2009, 16h23
  4. Binding objet et combobox dans listview
    Par warmy dans le forum Windows Presentation Foundation
    Réponses: 12
    Dernier message: 11/03/2009, 00h29
  5. [arbre] Sauvegarder un objet dans un fichier
    Par Guigui_ dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 00h55

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