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 :

[Binding] DataGrid incluant une combobox [Fait]


Sujet :

Windows Forms

  1. #1
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut [Binding] DataGrid incluant une combobox
    Bonjour,

    J'ai un datagrid qui pointe via un BindingSource sur une classe A.

    A a une variable membre "b" de type B.

    Dans le datagrid il y a bien une colonne "B" qui apparait, que j'ai passé en ComboBox, de façon à choisir parmi mes différentes instance de B.

    Le problème c'est que les valeurs proposées dans la bombobox sont de type "string", alors que ma variable est de type "B", donc ça hurle à l'exécution.

    Comment faire ?

    D'avance merci.
    ZTAB (Ze Text Adventure Builder)

    Logiciel très intuitif et ergonomique de création de jeux d'aventure et de livres dont vous êtes le héros.

    http://sites.google.com/site/ztabsoft/

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 109
    Points : 120
    Points
    120
    Par défaut
    Je ne me souviens pas si il est possible de binder directement une colonne sur un objet fils.

    Je pense qu'il serait plus facile d'ajouter la combo sur une colonne qui contiendrait l'id par exemple du membre de type B.

    Ensuite sur cette colonne ,tu bindes une DataGridViewTextBoxColumn.

    Il faut que tu précises la dataSource de ta colonne de type DataGridViewTextBoxColumn. Pour cela tu peux utiliser une BindingSource que tu initialises avec une collection d'objet puis définie les propriétés ValueMember et DisplayMember pour paramétrer ta colonne.

    C'est l'id du membre B qui permettra de positionner à la bonne valeur ta combo.

  3. #3
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    Si c'est une string je sais faire (Je sais faire à la perfection avec des DataSets), mais on perd le bénéfice de l'approche objet. Ou alors à un moment faudra détecter que la string a changé, se débrouiller pour retrouver le bindingsource qui alimentait la combobox et retrouver l'objet fils correspondant à la string Id... J'ai du mal à croire que ca ne se fait pas plus naturellement quand meme, au moins aussi naturellement que via les datasets.
    ZTAB (Ze Text Adventure Builder)

    Logiciel très intuitif et ergonomique de création de jeux d'aventure et de livres dont vous êtes le héros.

    http://sites.google.com/site/ztabsoft/

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 109
    Points : 120
    Points
    120
    Par défaut
    J'aime bien mieux travailler avec des collections d'objet moi aussi, mais le plus simple dans ce cas et de rajouter une propriétés à ta classe A du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public string ChildID
    {
    get {return B.Id}
    }
    et de t'appuyer dessus pour afficher toujours via des objets ta combo. Pour gérer les modifications regarde du coté de INotifyPropertyChanged.

    Si tu souhaites creuser pour binder l'objet fils regarde du coté PropertyDescriptor, TypeDescriptionProvider mais la complexité ajoutée n'en vaut pas le coup à mon avis

  5. #5
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    oui c'est une bonne astuce pour afficher la valeur. Mais pour renseigner la valeur de B, sur le changement du ChildId, je ne vois pas trop.

    INotifyPropertyChanged je connais mais ne voit pas trop comment l'appliquer das ce cas là.

    Les solutions complexes ne me font pas peur, si tu sais pointer vers un tuto, je suis preneur.
    ZTAB (Ze Text Adventure Builder)

    Logiciel très intuitif et ergonomique de création de jeux d'aventure et de livres dont vous êtes le héros.

    http://sites.google.com/site/ztabsoft/

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 109
    Points : 120
    Points
    120
    Par défaut
    Pour renseigner la valeur de B, tu peux faire ça sur des event de ta grille RowValidating ou EndEdit, mais je te l'accorde cela sort du modèle objet.

    Pour le reste je n'ai pas du tuto sous la main. Tu peux regarder du côté des webcast msdn, il me semble qu'une session databinding de Mitsu Furuta traitait de ce sujet

  7. #7
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    Je crois me souvenir d'avoir vu une fois un tutorial écrit qui traitait ca, en traitant un event de la datagrid et en utilisant un truc de conversion.
    2 Problèmes:
    * pas moyen de mettre la main dessus
    * Je me disais qu'en version 2008, ca avait peut etre été amélioré
    * Je l'ai peut-être tout simplement rêvé.

    Je vais regarder du côté du Mitsu.
    Si jamais tu retrouves le pointeur, n'hésites pas à poster, il est possible que je passe à côté, ou que je tombe sur une ancienne version.
    ZTAB (Ze Text Adventure Builder)

    Logiciel très intuitif et ergonomique de création de jeux d'aventure et de livres dont vous êtes le héros.

    http://sites.google.com/site/ztabsoft/

  8. #8
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    Bon je suis allé voir côté Mitsu le databinding avancé, mais bon le webcast est super long à charger. Avec ma connexion trop lente, j'ai craqué au bout de 10 minutes d'attente, j'ai téléchargé les slides, mais elles sont trop générales. Il est dur de les comprendre sans avoir le discours oral derrière.

    J'ai retrouver mon histoire de conversion, c'est l'évent CellFormatting du DataGridView, ca ca permet d'afficher par exemple l'Id de l'objet ou lieu d'afficher l'objet, c'est déjà ca.

    Maintenant, j'ai vu qu'on pouvait utiliser ValuePushed en mode virtuel pour faire la conversion dans l'autre sens, mais ca ne semble pas marcher.

    Si vous avez des idées.
    ZTAB (Ze Text Adventure Builder)

    Logiciel très intuitif et ergonomique de création de jeux d'aventure et de livres dont vous êtes le héros.

    http://sites.google.com/site/ztabsoft/

  9. #9
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    J'ai essayé le CellParsing, ca me permet de convertir la valeur string renvoyée par la combobox dans l'object que je souhaite. Mais je ne sais pas pourquoi il ne s'en souvient pas et il rehurle que je ne peux pas convertir un string en object.

    Idées ?
    ZTAB (Ze Text Adventure Builder)

    Logiciel très intuitif et ergonomique de création de jeux d'aventure et de livres dont vous êtes le héros.

    http://sites.google.com/site/ztabsoft/

  10. #10
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    Bon il faut oublier CellParsing et CellFormating, voici la réponse:

    http://www.devnewsgroups.net/group/m...opic36727.aspx

    Il est donc bien possible de binder une colonne sur un objet fils.

    Merci à vous pour vos réponses.
    ZTAB (Ze Text Adventure Builder)

    Logiciel très intuitif et ergonomique de création de jeux d'aventure et de livres dont vous êtes le héros.

    http://sites.google.com/site/ztabsoft/

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

Discussions similaires

  1. [MVVM] Binding TwoWay sur une combobox
    Par Digilougm dans le forum Silverlight
    Réponses: 5
    Dernier message: 21/06/2011, 11h06
  2. Binding ItemsSource d'une combobox Silverlight 4
    Par NTIC13 dans le forum Silverlight
    Réponses: 6
    Dernier message: 14/03/2011, 12h02
  3. Ajouter un binding vers null à une combobox
    Par sovitec dans le forum Silverlight
    Réponses: 6
    Dernier message: 10/02/2011, 15h59
  4. Charger un DataGrid grâce à une comboBox
    Par loic20h28 dans le forum C#
    Réponses: 26
    Dernier message: 15/03/2008, 15h46
  5. [Delphi for PHP] Récupérer les données d'un Datagrid pour une combobox ou listbox
    Par Truebison dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 27/08/2007, 09h27

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