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

C# Discussion :

List<T>. OrderBy et Reflection


Sujet :

C#

  1. #1
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut List<T>. OrderBy et Reflection
    Bonjour,

    J'ai une GridView et sur l'event OnSorting j'ai la fonction suivante :

    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
    19
    20
    21
    22
    23
    24
    25
            protected void gvOrders_Sorting(object sender, GridViewSortEventArgs e)
            {
                //Récupération de la propriété sur laquelle triée
                System.Reflection.PropertyInfo property = typeof(OrderBO).GetProperty(e.SortExpression);
                //Si type SimpleBO on prend le code comme paramètre de tri
                if (property.PropertyType == typeof(SimpleBO))
                {
                    property = typeof(SimpleBO).GetProperty("Code");
                }
                //Test de l'état courant de la grille
                if (this.MyModule.OrderFacade.CurrentGridViewSorting == "DESC")
                {
                    //Mémorisation de l'état actuel de la grille
                    this.MyModule.OrderFacade.CurrentGridViewSorting = "ASC";
                    //Appel de la liste courante triée comme souhaitée par l'utilisateur
                    gvOrders.DataSource = this.MyModule.OrderFacade.CurrentOrdersList.OrderBy(order => typeof(OrderBO).InvokeMember(property.Name, System.Reflection.BindingFlags.GetProperty, null, order, null));
                    //Actualisation des données
                    gvOrders.DataBind();
                }
                else
                {
                    this.MyModule.OrderFacade.CurrentGridViewSorting = "DESC"; 
                    gvOrders.DataSource = this.MyModule.OrderFacade.CurrentOrdersList.OrderByDescending(order => typeof(OrderBO).InvokeMember(property.Name, System.Reflection.BindingFlags.GetProperty, null, order, null));
                    gvOrders.DataBind();
                }
    Ma question est : Comment je fais pour "descendre" d'un cran supplémentaire ?

    Je veux dire que sur le `typeof(OrderBO).GetProperty(e.SortExpression)` si c'est un type simple (string, int, datetime, etc) tout se passe bien, mais si c'est un objet custom il faudrait que je fasse un `typeof(OrderBO).GetProperty(e.SortExpression).GetProperty("Code")`

    En gros en debug sur la property récupérée je vois `OrderBO.Code` alors qu'il me faudrait par exemple `OrderBO.Customer.Code`.

    Une suggestion ? Merci d'avance.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut
    Je passe en résolu parce que la question n'est plus d'actualité, j'ai mis des properties d'affichage en readonly qui renvoie les champs affichés dans le gridview sous forme de string et comme ça je peux trier dessus. Voilà voilà.

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

Discussions similaires

  1. List Sort/OrderBy via un string?
    Par BenoitM dans le forum Framework .NET
    Réponses: 8
    Dernier message: 21/09/2011, 14h20
  2. Réponses: 5
    Dernier message: 01/02/2011, 15h34
  3. Serialization d'une List<FileInfo> => Error reflecting types
    Par Radec dans le forum Windows Forms
    Réponses: 2
    Dernier message: 17/07/2008, 10h10
  4. Réponses: 2
    Dernier message: 04/07/2007, 17h12
  5. [C# 2.0]Reflection-Liste<T>-Connaitre T
    Par lord_paco dans le forum C#
    Réponses: 8
    Dernier message: 02/10/2006, 17h10

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