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 :

[C# .NET 2.0] Databinding avec ArrayList


Sujet :

Windows Forms

  1. #1
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Par défaut [C# .NET 2.0] Databinding avec ArrayList
    Bonjour à tous,

    Je dispose d'une source de données de type ArrayList stockant une collection d'objets de type disons ConnectionParam. Cette classe (designed by me) expose un certain nombre de propriétés publiques via des getters / setters.

    J'aimerais "binder" cet ArrayList avec une Listbox, en affichant pour chaque item, une propriété d'une instance de la classe ConnectionParam (chaque instance étant stockée dans l'ArrayList).

    En super concentré et en admettant que myArrayList est déjà peuplée de sa collection de ConnectionParam() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myListbox.Datasource = myArrayList;
    m'affiche dans la liste le type ConnectionParam, et c'est tout.

    Comment faire pour afficher la valeur d'une propriété au lieu du nom du type ?
    Thanks

  2. #2
    Expert confirmé
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Par défaut
    Salut,

    Je te conseille de laisser tomber ta ArrayList et d'utiliser plutôt un généric type BindingList : http://msdn2.microsoft.com/en-us/library/ms132679(VS.80).aspx

    Pour faire simple le généric bindingList implémente l'interface qui sera nécéssaire au binding de tes objets maison sur un controle.

    Ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myListbox.Datasource = myBindingList
    et tu définis les proprités DisplayMember et ValueMember en mettant le nom de ta propriété

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Par défaut
    Merci c'est exactement ce qu'il me faut
    Par contre, par curiosité, c'était faisable sans la classe BindingList ?

  4. #4
    Membre Expert
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Par défaut
    Oui c'etait fesable, suffit de definir le nom du champ de l'objet que tu veux afficher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    myListbox.Datasource = myArrayList;
    myListbox.DisplayMember = "NomPropriete";
    Mais neo a raison, autant utiliser la classe qui prevoit tout ce qu'il faut pour le binding

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Par défaut
    Citation Envoyé par Piotrek
    Oui c'etait fesable, suffit de definir le nom du champ de l'objet que tu veux afficher
    Mais neo a raison, autant utiliser la classe qui prevoit tout ce qu'il faut pour le binding
    Merci Piotrek,
    Je suis énervé j'y ai passé la journée et la soluce que tu me donnes j'étais sur de l'avoir testée sans succès (Je me demande si dans .DisplayMember, je n'avais pas préfixé le nom du champ par le nom de sa classe...).
    Sous ton impulsion, je viens de la retester et ça fonctionne of course :-)

    Malgré tout, le generic BindingList est la soluce recommandée, donc je m'y attele :-)

    Merci encore, la classe le groupe .NET ;-)

  6. #6
    Expert confirmé
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Par défaut
    Dans .NET 2.0 avec l'arrivée des générics le ArrayList ne devrait plus être utilisé. Même si on stocke des objets différents dans une liste il suffit de leur faire implémenter une interface commune

    ... et il y a un léger gain de performances car on évite de faire un cast systèmatique lorsqu'on utilise les objets de la liste.

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Par défaut
    Citation Envoyé par neo.51
    Dans .NET 2.0 avec l'arrivée des générics le ArrayList ne devrait plus être utilisé.
    D'accord je le referai plus, promis :-)
    Je suis parti sur BindingList<T> ceci dit !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/02/2007, 11h22
  2. [Vb.Net]NumericUpDown et DataBinding : problème avec la valeur min
    Par SamRay1024 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 25/04/2006, 16h34
  3. [CR .NET] Table croisée: compléter avec lignes vides
    Par kartben dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 29/06/2004, 10h38
  4. [VB.NET] Fichier Excel vérouillé avec mot de passe
    Par rafano dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/06/2004, 14h36
  5. [VB.NET] Alimenter un dataset avec une chaine XML...
    Par David.V dans le forum ASP.NET
    Réponses: 3
    Dernier message: 25/05/2004, 09h09

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