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.