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 :

Notifier une bindingSource.


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut Notifier une bindingSource.
    Bonjour,

    Je suis actuellement en train de développer un objet "CustomSource" qui prend un objet de type BindingSource en datasource. L'avantage de l'objet BindingSource est qu'il fournit un "curseur" sur les données. Par curseur, j'entends que si plusieurs contrôles sont bindés à une même instance de BindingSource alors le changement de position sur l'un entraine un changement de position sur les autres. Le seul problème que j'ai est que le "curseur" sur les données n'est plus fonctionnel quand mon objet "CustomSource" vient s'intercaler entre le contrôle et l'objet BindingSource. Il me semble qu'il faudrait alors que je capte, dans ma CustomSource, tout changements de position sur le contrôle lié et que je les notifie à la bindingSource. Je ne vois cependant pas comment faire cela. Pourriez-vous m'éclairer ?

    merci d'avance.

    mathmax

  2. #2
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Tu dois modifier la propriété Position du bindingsource en réponse à un evenement particulier de ton controle, par exemple SelectionChanged ou FocusedItemChanged.

  3. #3
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut
    Merci pour ta réponse.

    Le problème que j'ai est que je ne connais pas contrôle depuis ma CustomSource car je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonControl.Datasource = MaSource;
    Bien sûr je pourrais manuellement ajouter tous contrôle bindés à une propriété collection de ma classe "CustomSource". Mais je préférais récupérer ces contrôles par reflexion. J'aimerais donc récupérer la Form dans laquelle mon objet "CustomSource" a été instancié et récupérer ensuite tous les contrôles de cette Form qui on pour datasource mon instance de CustomSource. Le problème que j'ai est de récupérer la Form dans laquelle mon objet "CustomSource" a été instancié. Saurais-tu comment faire cela ? Ou peut-être tu as une autre idée pour récupérer les contrôles ayant pour datasource mon instance de CustomSource ?

  4. #4
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Le problème que j'ai est de récupérer la Form dans laquelle mon objet "CustomSource" a été instancié
    Cela m'étonne pas que ce soit un problème car c'est impossible, enfin a moins de passer une référence a Form dans le constructeur de ton customSource mais quoi qu'il en soit c'est hyper moche pour un controle de travailler sur son parent.

    J'ai beau me creuser la tête, je vois pas du tout ce qui peut te pousser à vouloir intercaler un objet de ton cru entre un controle et un bindingsource. Je n'ai jamais vu ça nulle part. SI tu pouvais m'expliquer ce que tu cherches à faire...

  5. #5
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut
    J'ai beau me creuser la tête, je vois pas du tout ce qui peut te pousser à vouloir intercaler un objet de ton cru entre un controle et un bindingsource. Je n'ai jamais vu ça nulle part. SI tu pouvais m'expliquer ce que tu cherches à faire...
    Oui excuse moi : cet objet sert à ajouter des propriétés virtuelles aux objets d'une collection (en réécrivant les propertydescriptors) de sorte que l'on pourra afficher à peu près tout ce que l'on veut sur nos objets (des résultats d'expression basées sur des propriétés de nos objets ou même sur les propriété de nos objet propriété etc...).


    Cela m'étonne pas que ce soit un problème car c'est impossible, enfin a moins de passer une référence a Form dans le constructeur de ton customSource mais quoi qu'il en soit c'est hyper moche pour un controle de travailler sur son parent.
    Oui c'est une solution, je passe ma form au constructeur de ma CustomSource... Pourquoi dis-tu que c'est super moche ? As-tu une autre idée ? Passer les contrôles directement ? Ca va être plus lourd d'utilisation... Comment ferais-tu ?

  6. #6
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    En gros l'intérêt donc de cette couche supplémentaire ce serait d'avoir par exemple dans un datagridview des colonnes qui afficheraient le résultat d'un calcul sur les autres propriétés.
    Style par exemple avec un objet fait d'un prix et d'une qte, tu pourrais afficher prix * qte dans une 3e colonne Total.

    Si c'est bel et bien ce que tu cherches à faire je pense qu'il est plus pertinent d'enrichir ton business objet avec des propriétés qui font ce boulot soit directement, soit par héritage ou par encapsulation. Avec ta méthode de couche intermédiaire, tu risques d'avoir certains problèmes sur le tri et le filtrage par le biais de la bindingsource sur tes nouvelles colonnes. La bindingsource est très riche en fonctionnalités, ce sera dur de tout implémenter.

Discussions similaires

  1. Notifier une jsp!
    Par lilisweety dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 22/06/2009, 11h01
  2. [Débutant]Miseà jour d'une BindingSource
    Par elsuket dans le forum C#
    Réponses: 3
    Dernier message: 27/03/2009, 16h00
  3. Réponses: 1
    Dernier message: 11/01/2007, 14h20
  4. [vb2005E] Enregistrer une Bindingsource dans une table
    Par moriss dans le forum Windows Forms
    Réponses: 5
    Dernier message: 08/06/2006, 14h14

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