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

Dotnet Discussion :

[Databinding] bind sur une propriété d'une collection


Sujet :

Dotnet

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [Databinding] bind sur une propriété d'une collection
    Bonjour à toutes et tous

    Le contexte :
    J'ai un objet "customer" avec une propriété "name" et une propriété "services" qui est une collection comprenant un seul objet "service".
    L'objet service contient une propriété "name".

    voila ma question : comment faire pour binder un textbox sur la propriété name du service ?
    Puis je faire quelque chose comme cela :
    textBoxID.DataBindings.Add("Text", currentCustomer, "Services[0].name")

    Merci à vous

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par herveb Voir le message
    Puis je faire quelque chose comme cela :
    textBoxID.DataBindings.Add("Text", currentCustomer, "Services[0].name")
    Non. Le Binding ne fonctionne pas comme Xpath par exemple (c'est regrettable, mais ça tuerait les perfs, peut être). Par contre, on peut faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textBoxID.DataBindings.Add("Text", currentCustomer.Services[0], "name")
    L'ennui, c'est que si par la suite tu fais currentcustomer.Services[0] = UnAutreTruc, tu ne seras pas bindé sur le nouveau truc.

    Si tu as la main sur le type de currentcustomer, tu peux rajouter une propriété qui expose directement l'objet que tu veux binder.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    merci pour votre réponse. Je vais essayer dès à présent. Cela fonctionne correctement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Customer customer = new Customer();
    customer.Name = "customer1";
    Service service1 = new Service();
    service1.Name = "service1";
    Service service2 = new Service();
    service2.Name = "service2";
     
    List<Service> list = new List<Service>();
    list.Add(service1);
    list.Add(service2);
    customer.Services = list;
     
    textBox1.DataBindings.Add(
                   new System.Windows.Forms.Binding("Text",
                   customer.Services[0],
                   "Name",
                   true,
                   DataSourceUpdateMode.OnPropertyChanged));

Discussions similaires

  1. Réponses: 10
    Dernier message: 23/03/2011, 16h10
  2. Réponses: 10
    Dernier message: 01/12/2010, 08h26
  3. Binding sur une proprité d'une propriété
    Par al2000 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 21/06/2010, 17h24
  4. Eval d'une propriété d'une classe dans une classe
    Par bizet dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/10/2008, 09h43
  5. Réponses: 2
    Dernier message: 17/04/2007, 17h14

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