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

Windows Forms Discussion :

Principe du DataSource sur un listbox


Sujet :

Windows Forms

  1. #1
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 527
    Par défaut Principe du DataSource sur un listbox
    Bonjour,

    Il y a un truc qui a du m'échapper. Depuis hier, je cherche une erreur dans mon code alors qu'elle semble se trouver dans C#. Mais je me dis que je n'ai peut-être pas compris quelque chose.

    J'ai une System.Collections.IList contenant de 0 à n objets.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (patients.Count != 0)
    {
       radListPatients.DataSource = patients;
       radListPatients.ValueMember = "Id";
       radListPatients.DisplayMember = "DisplayName";
    }
    Si j'ai au moins un patient dans ma liste, tout va bien.
    Si par malheur ma liste est vide, je ramasse une erreur qui me dit:

    List Control Wrong Display Member
    Nom du paramètre : newDisplayMember

    D'abord, est-ce que c'est logique ?

    Ensuite, quand je vais ajouter un patient à ma liste patients, il va se passer quoi si je n'ai pas pu assigner le DisplayMember ? La liste va afficher quoi ?

    Enfin, quand j'assigne un Datasource à mon listbox, est-ce que je crée seulement un lien entre les 2 ou est-ce que je fais une copie des éléments ?

    Papy !

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Essaie d'utiliser un bindingsource entre ta source de données (Ilist) et ton listbox.
    Tu configures le bindingsource pour utiliser un datasource de type objet (le type des objets contenus dans le IList).
    Tu bindes le listbox sur le bindingsource, en mettant les bons displaymembers, etc.
    Tu affectes ton IList comme datasource de ton bindingsource.

    EDIT : Tu travailles sur les éléments de la liste, pas sur une copie. Tout est passé par référence.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Dans les cas simples, il vaut mieux affecter d'abord le ValueMember et le DisplayMember (dans le designer par exemple, ou dans le constructeur), et après la DataSource. c'est bien plus performant, comme le montre je sais plus quel post de je sais plus quel thread de ce forum (précis, hein )

    Et il n'y a a priori aucune raison que le cas "taListe.Count = 0" pose problème.

    par contre, si tu veux qu'une modif de ta liste soit impactée automatiquement visuellement, c'est une BindingList et non pas une List qu'il faut utiliser.

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Ce qui est simplifié par l'utilisation d'un bindingsource...
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 527
    Par défaut
    Je vais prendre un bindingsource. Merci.

    ( pas toujours simple ces histoires de liaison, mais bien pratiques tout de même :-) )

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

Discussions similaires

  1. drag and drop sur une listBox?
    Par Mickey.jet dans le forum Delphi
    Réponses: 3
    Dernier message: 30/09/2006, 10h27
  2. [MFC] clic droit sur une listbox ?
    Par julien.nasser dans le forum MFC
    Réponses: 1
    Dernier message: 07/06/2006, 14h53
  3. Encore une question sur les ListBox !!
    Par SebRs dans le forum Windows
    Réponses: 3
    Dernier message: 09/05/2006, 15h29
  4. dégradé sur une listbox avec 1/2 couleurs
    Par avogadro dans le forum Composants VCL
    Réponses: 8
    Dernier message: 05/05/2006, 18h21
  5. Précision sur les ListBox
    Par SebRs dans le forum Windows
    Réponses: 5
    Dernier message: 04/05/2006, 16h38

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