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 :

Utiliser IbindingList ou BindingSource


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 Utiliser IbindingList ou BindingSource
    Bonjour

    Jusqu'ici je n'emploie que tres rarement les BindingSouce car elle ne m'apportent rien dans la majorité des cas

    - Binder une datatable sur un DGV

    - Ou m'empechent une astuce amusante
    Binder une datatable sur plusieurs combo permettant la recherche d'un row sur plusieurs colonnes

    Parfois je l"emploie pour binder des List<T> sur un DGV afin de permettre le Add et Delete

    Question :

    Vaut il mieux utiliser un BindingSource
    Ou ajouter l'interface IbindingList dans la classe qui definit ma liste

    Quels seraient les pour et contre ?

  2. #2
    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
    BindingSource est surtout utile quand plusieurs contrôles sont bindés à un même objet métier / une même liste d'objets métier. Perso j'aime bien m'en servir ; quand on code la partie "UI", ça uniformise pas mal. Ca gère un élément "Current", par exemple, que je préfère utiliser plutôt que chercher dans la grille quel est l'élément courant.

    Disons que le binding fonctionne avec IList, IBindingList, IBindingListView ; chacune de ces interfaces est un héritage de la précédente. IList ne gère que le parcours et l'ajout, IBindingList gère en plus le tri et la notification, IBindingListView gère aussi le tri multiple et le filtrage. Mais BindingSource, en lui-même, ne filtre pas ; il se contente de rediriger toutes les demandes de tri et de filtre à sa source. C'est qu'un tuyau.

    Après, il est certain qu'il manque au framework une implémentation de IBindingListView. A ma connaissance, seule la DataView l'implémente...

  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
    Merci Guulh

    Pratiquement
    Ce que j'avais constaté, c'est ceci

    1- Si tu bind une liste direct sur un dgv : pas de tri pas d'ajout pas de delete
    2- Si tu bind une liste a un dgv via binding source : pas de tri MAIS ajout et delete autorisé
    3- Si tu derive IBindDingList dans la liste tu peux faire un bind direct de la liste sur le DGV avec tri,ajout et delete (pour autant que les methodes respectives soient définie dans l'interface)

  4. #4
    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
    J'ai constaté les mêmes choses (heureusement, quelque part ) effectivement l'utilisation d'une BindingSource enrichit un peu le comportement des List.

    Mais c'est une couche d'abstraction que j'aime bien. Tous les contrôles sont plugués à des BS, tous les BS sont plugués à des objets métier, et go (aussi bien les contrôles simples tels que la textbox, liés à un objet unique, et les contrôles de type liste tels que la listview, la dgv, etc.)

  5. #5
    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
    Citation Envoyé par Guulh Voir le message
    Mais c'est une couche d'abstraction que j'aime bien. Tous les contrôles sont plugués à des BS, tous les BS sont plugués à des objets métier, et go (aussi bien les contrôles simples tels que la textbox, liés à un objet unique, et les contrôles de type liste tels que la listview, la dgv, etc.)
    Complètement +1
    Cela permet en effet de découpler un peu l'interface et les objets métier.
    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

  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
    Salut Saumont agile

    Heueee ?
    Dans tous les cas vraiment ?

    Prenons un cas simple : une datatable et un DGV

    Cas 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dgv.datasource=MaDataTable;
    Cas 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    BindingSource MaBDS=new BindingSource();
    MaBDS.DataSource=MaDataTable;
    dgv.DataSource=MaBDS;
    Qu'est ce que le cas 2 apporte en plus sinon 2 lignes de code en plus, un objet complementaire a gerer par le FW, et peut etre la satisfaction académique d'avoir ajouté une abstraction

    Mais mon sentiment c'est qu'a force d'abstraction pour le plaisir on finit pas avoir du mal a retrouver ses jeunes !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/12/2010, 17h06
  2. Comment utiliser proprement le BindingSource.AddNew()
    Par Fikou-Sama dans le forum VB.NET
    Réponses: 2
    Dernier message: 11/08/2009, 23h01
  3. Comment utiliser BindingSource.AddNew?
    Par nem&sys dans le forum Accès aux données
    Réponses: 4
    Dernier message: 05/02/2007, 11h46
  4. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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