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 :

Bind une liste sur une ListView multicolonne


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut Bind une liste sur une ListView multicolonne
    Bonjour

    J'essaye de voir s'il est possible de faire un truc un peu tordu

    J'ai une liste de classe de type A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class B
    {
       public string Nom {get;set;}
    }
     
    public class A
    {
       public int TP {get;set;}
       public int valeur;
       public List<B> lB = new List<B>();
    }
     
    public List<A> lA=new List<A>();
    J'aimerais binder ma liste lA sur une listview et afficher deux colonnes,
    ID et le Count de b

    Est-ce possible ?

  2. #2
    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 : 43
    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
    Par défaut
    Hélas, non : le contrôle ListView ne peut pas être bindé, contrairement à une ListBox par exemple. Dommage, ça limite beaucoup son intérêt...
    Tu peux faire quelque chose de similaire en utilisant un DataGridView à la place. Par contre, il faudrait transformer les champs publics de ton objet en propriétés (avec des accesseurs get/set) pour que ça fonctionne. Pour le count de B, indique dans le DataPropertyName de la colonne "lB.Count"

  3. #3
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut

    Merci TomLev

    Et avec une listbox ca marcherait ?

    Je me suis mal exprimé

    J'aimerais binder ma liste lA sur une listview et afficher deux colonnes,
    ID et le Count de b
    C'est TP (qui a déja un accesseur)
    Et Count de B que je voudrais afficher

    Si je fais avec une ListView

    Je fais DisplayMember= "TP";

    Mais pour le Count de B j'a pas bien compris comment et ou je devais le declarer soit pour le ListBox, soit pour le DGV

  4. #4
    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 : 43
    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
    Par défaut
    un ListBox permet de binder sur une source de données (avec la propriété DataSource), mais ne peut pas afficher plusieurs colonnes

    Pour le Count de B, 2 solutions :
    - créer un accesseur pour lB.Count :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public int CountB { get { return lB.Count; } }
    Dans ce cas tu mets "CountB" dans le DisplayMember (ou le DataPropertyName de la colonne si tu utilises un DataGridView)

    - créer un accesseur pour LB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public List<B> ListeB { get { return lB; } }
    Et dans ce cas tu mets "ListeB.Count" comme DisplayMember ou DataPropertyName

  5. #5
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Merci Tomlev

    Je vois !
    Donc ListBox no way pour avoir deux colonnes

    Et tu viens d'eclairer unn peu plus ma lanterne sur l'usage indirect d'un accesseur !

    Je vais chipooter ave le DGV et voir ce que ca donne !

  6. #6
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Magnifique

    J'ai essayé dans le DGV
    Le coup de l'accesseur pour capter le count de ma liste secondaire c'est magique !

    C'est sur ces coup la qu'on apprécie la vraie saveur et l'utilité subtile des accesseurs !

    Mais je retombe quand meme sur un bingz du DGV que j'avais déja rencontré, c'est que l'ordre d'affichage des colonnes ne suit pas forcément l'ordre des déclarations

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

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  2. [SP-2010] Faire une somme sur une colonne d'une liste
    Par sebfreu dans le forum SharePoint
    Réponses: 6
    Dernier message: 19/01/2012, 11h05
  3. binder une combo sur une list ou une autre
    Par chris81 dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 12/02/2009, 12h01
  4. Réponses: 8
    Dernier message: 30/09/2006, 05h18
  5. rafraichir une page sur une liste de selection
    Par klimero dans le forum Général JavaScript
    Réponses: 26
    Dernier message: 20/07/2006, 15h52

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