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 :

Ordonner un ItemSource


Sujet :

Silverlight

  1. #1
    Membre éclairé Avatar de Mozofeuk
    Inscrit en
    Novembre 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 326
    Par défaut Ordonner un ItemSource
    Bonjour à tous,

    Je rencontre un problème tout simple selon moi mais je n'arrive pas à trouver de solution.

    Par le biais de RIA je récupère une entité MISSION contenant elle même une liste d'entités ACTIONs. Mes ACTIONS sont ordonnées grave à un champs ACT_ORDER. Le problème c'est que quand je bind par exemple une listbox sur ma liste d'ACTIONs, ces dernière sont ordonnées en fonction de l'ID et non de mon ACT_ORDER. Je voudrais pouvoir ordonner l'affichage selon mon champs ACT_ORDER.

    Le problème c'est que ItemsSource de listbox et MISSION.ACTIONs sont en lecture seul donc impossible de "sorter" ma liste avant le Binding.

    voilà en gros mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        <Grid DataContext="{Binding Path=MISSION}">
            <Grid.RowDefinitions>
                <RowDefinition Height="50"></RowDefinition>
                <RowDefinition Height="*"></RowDefinition>
            </Grid.RowDefinitions>
     
            <TextBlock Grid.Row="0" Text="{Binding Path=MISSION_NAME,Mode=TwoWay}"></TextBlock>
     
            <ItemsControl Grid.Row="1" ItemsSource="{Binding Path=ACTIONs,Mode=TwoWay}" DisplayMemberPath="ACT_NAME"></ItemsControl>
        </Grid>
    Y'a t'il une manière de "sorter" 'MISSION.ACTIONs' sans casser mon binding ?


    merci d'avance !

  2. #2
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Deux idées me viennent à l'esprit. Une facile (mais un peu trop facile justement) : trier dans ton service. Une autre, c'est que les classes proxy de RIA devraient être déclarées en partial (pas sûr mais a mon avis). Donc tu pourrais leur rajouter une propriété qui renvoie la liste triée comme tu veux et binder dessus.

  3. #3
    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
    Moi j'aurais géré ça au niveau de l'UI :

    Tu déclares un CollectionViewSource dans ton XAML, bindé sur MISSION.ACTIONs, où tu mets les SortDescriptions que tu veux, et tu bindes le ItemsControl dessus.

  4. #4
    Membre éclairé Avatar de Mozofeuk
    Inscrit en
    Novembre 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 326
    Par défaut
    Merci pour vos réponses ! Ça fonctionne parfaitement avec la méthode de tomlev

    Je déclare une CollectionViewSource dans les ressources comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <UserControl.Resources>
            <CollectionViewSource Source="{Binding Path=ACTIONs}" x:Key="SortedActions">
                <CollectionViewSource.SortDescriptions>
                    <compMod:SortDescription PropertyName="ACT_NUM"></compMod:SortDescription>
                </CollectionViewSource.SortDescriptions>
            </CollectionViewSource>
        </UserControl.Resources>
    Puis je le Bind comme ça sur mon ItemsSource :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ItemsSource="{Binding Source={StaticResource SortedActions}}"
    Merci à vous

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

Discussions similaires

  1. tri ordonné à ma façon
    Par Larson dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 10/02/2005, 14h31
  2. Insérer dans une Vue ordonnée
    Par biroule dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/09/2004, 15h27
  3. [MAP] comment récupérer la liste des clé ordonnées
    Par Alec6 dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 21/07/2004, 16h37
  4. ordonner selon un champ d'un autre table
    Par Mister dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/10/2003, 14h40
  5. Ordonner ds l'ordre croissant de 2 champs confondus
    Par Coolbens dans le forum Langage SQL
    Réponses: 11
    Dernier message: 17/06/2003, 16h39

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