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

Silverlight Discussion :

Mise à jour des champs d'une datagrid


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 199
    Par défaut Mise à jour des champs d'une datagrid
    bonjour

    je fais une appli dans laquelle j'utilise le pattern MVVM. Côté ViewModel, j'ai une observableCollection<ObjetToto> qui contient plusieurs propriétés de type divers et variés.

    J'affiche tout cela côté vue dans une dataGrid. J'ai bien l'affichage de mon tableau, mais mon soucis est que j'aimerai rafraichir certains champs extérieurs à mon tableau directement après avoir saisie mes valeurs. J'ai donc mis côté IHM
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ItemsSource="{Binding maListe,Mode=TwoWay,UpdateSourceTrigger=Default}"
    et dans le setter de mon observableCollection (côté ViewModel) méthode rafraichir() qui rafraichi mes données extérieurs..

    seulement voilà, quand je saisie des données dans mon tableau je ne passe pas dans le setter de mon observableCollectionp, il ne se passe rien .. comment résoudre ce pb?

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Pas sur d'avoir compris... Tu peux réexpliquer ?

  3. #3
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Quand tu modifies une valeur dans une colonne de ton DataGrid tu ne passes pas par le set de ton ObservableCollection. Tu vas passer par le set de la propriété de l'objet que tu as modifié. Le set de ton ObservableCollection n'est pas non plus appelé quand tu ajoutes ou supprimes des éléments.

    Sinon ben comme Thomas j'ai pas compris le reste.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 199
    Par défaut
    oui je réexplique:

    côté ihm j'ai:
    * un tableau à deux colonnes (nom, durée) et une textbox "total"
    mon tableau est bindé à une observable collection
    mon total est bindé à une propriété "montotal"

    dans mon view model
    * mon observable collection
    * ma propriété montotal

    le but: quand je saisie des durées dans mon tableau, le total se met à jour automatiquement.

    ma démarche: dans le view model, dans le setter de mon observable collection, j'ai créé une méthode "rafraichir" qui parcours toute les durées, en calcul le total, et l'affecte à "montotal" pour rafraichir ma vue.

    et là rien ne se passe..

    Skyounet j'ai bien compris ta remarque, par contre j'ai un soucis lié à ça maintenant: mon observable collection "maliste" est composé d'objets de types "elements". Ma classe élément est créé dans une application web, et je récupère ma liste via service WCF. Mes getter et setter sont donc dans mes classes proxy générées. Problème, si je modifie ces classes c'est assez risqué (surtout si je fait des mises à jour de mes références de service).. Comment faire alors pour rafraichir ma liste?

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 199
    Par défaut
    c'est tout bon.. je suis passé par un autre procédé:
    * j'ai ajouté à ma datagrid un eventToCommand sur l'évènement "CellEditEnded"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <i:Interaction.Triggers>
                                    <i:EventTrigger EventName="CellEditEnded">
                                        <cmd:EventToCommand
                                            Command="{Binding MaCommand}" />
                                    </i:EventTrigger>
                                </i:Interaction.Triggers>
    et côté viewModel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void InstancierCommande()
            {
                MaCommand= new RelayCommand(ExecuteMaCommand);
            }
     
            public ICommand MaCommand{ get; internal set; }
     
            public void ExecuteMaCommand()
            {
                rafraichirListe();
            }
    et ça marche très bien.. merci pour l'info du setter de l'observableCollection

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

Discussions similaires

  1. mise à jour des champs d'une ligne de table
    Par laurentSc dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/12/2009, 19h09
  2. Mise à jour des champs d'une table
    Par soso78 dans le forum Access
    Réponses: 2
    Dernier message: 14/12/2006, 15h57
  3. Module de mise à jour des champs d'une table
    Par kikaillo dans le forum Access
    Réponses: 14
    Dernier message: 18/04/2006, 09h42
  4. Réponses: 6
    Dernier message: 07/02/2006, 14h44

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