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 :

Trier les éléments d'une datagrid (RAI MVVM)


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Par défaut Trier les éléments d'une datagrid (RAI MVVM)
    Bonjour à tous !

    Toujours dans ma découverte de MVVM !

    J'ai une table toute simple (1 code + 1 nom) que je stocke dans une observableCollection ListeCiteAntiques.

    J'affiche ma collection dans une dataGrid mais je voudrais que la liste soit triée par ordre alphabétique.

    Je peux passer par un tri (Linq) sur mon modele EF (ça marche). Le problème, c'est que si j'aoute un nouvel item à ma datagrid, il est positionné en bas de liste.

    Quelle serait la meilleure approche dans un tel cas de figure ?

    J'ai bien tenté de reloader mes données après enregistrement du nouvel item mais la liste retournée n'inclue pas le nouvel item (curieux, d'ailleurs).
    Je n'a pas approfondi car je ne trouve pas très pertinent de requestionner la base (même si c'est une petite liste) car c'est un process que je souhaite utiliser dans des contextes plus vastes.

    Merci d'avance,
    Frédéric

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Utilise une CollectionViewSource en XAML pour définir l'ordre de tri

  3. #3
    Membre confirmé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Par défaut
    Très juste !
    Je n'avais tout simplement pas pensé à celà (je l'avais repéré mais dans des exemples en codeBehind et je n'arrivais pas à les reproduire dans mon viewModel)... Comme quoi j'ai encore pas mal de chemin ... !

    Merci pour la solution, Thomas!

    Bon week-end!
    Frédéric

  4. #4
    Membre confirmé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Par défaut
    Je viens d'essayer la collectionViewSource mais ma dataGrid n'affiche maintenant plus rien ! Enfin, pas vraiment, j'ai bien des lignes qui se matérialisent, mais elles sont vides.

    Extrait du code de la view :

    La déclaration ,
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      <controls:ChildWindow.Resources>
            <CollectionViewSource x:Name="SortedListeCites" Source="{Binding Path=ListeCiteAntiques}" >
                <CollectionViewSource.SortDescriptions>
                    <compMod:SortDescription PropertyName="nomCiteAntique" Direction="Ascending"/>
                </CollectionViewSource.SortDescriptions>
            </CollectionViewSource>
        </controls:ChildWindow.Resources>

    et le datagrid,

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
       <sdk:DataGrid  AutoGenerateColumns="False" Height="214" 
                          HorizontalAlignment="Left" Margin="23,12,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="150"
                           DataContext="{Binding ElementName=SortedListeCites}" 
                          ItemsSource="{Binding Path=nomCiteAntique}" Visibility="Visible" >
                <sdk:DataGrid.Columns>
                	<sdk:DataGridTextColumn Binding="{Binding codeCiteAntique}" CanUserReorder="False" CanUserResize="False" Visibility="Collapsed"/>
                    <sdk:DataGridTextColumn Binding="{Binding nomCiteAntique}" CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" Header="Nom" MinWidth="148" />
                </sdk:DataGrid.Columns></sdk:DataGrid>


    Serait-ce dù à la gestion des colonnes (le binding est pourtant bien repris du parent ... j'imagine ...)

  5. #5
    Membre confirmé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Par défaut
    Bon, pas la peine de vous creuser les méninges ...

    Le problème venait du binding de l'itemsSource qui ne devait tout simplement pas avoir de path (juste {Binding}) ... d'un côté c'est logique ... comme quoi, ça commence à rentrer .

    Encore merci pour l'aide !

    @ bientôt,
    Frédéric

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/10/2008, 11h13
  2. Trier les éléments d'une boite de dialogue OpenDialog
    Par Gengis_Khan dans le forum Composants VCL
    Réponses: 0
    Dernier message: 17/05/2008, 10h16
  3. Trier les élément d'une ListBox
    Par gluc86 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 17/01/2008, 14h58
  4. Trier les éléments d'une CListCtrl
    Par hanane_iaai dans le forum MFC
    Réponses: 21
    Dernier message: 15/10/2007, 04h52
  5. Trier les éléments d'une DropDownList
    Par Med80 dans le forum C#
    Réponses: 6
    Dernier message: 18/04/2007, 19h44

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