2010-10-22 9 views
3

J'ai une grille liée à un ainsi SP linqed:le tri d'un gridview lié à un LINQ SP

Session["results"] = db.spGetCaseByNumberOrSurname(txtCaseNum.Text.Trim(), null).ToList(); 
gvResults.DataSource = Session["results"]; 

sur le tri de celui-ci, je voudrais pouvoir le faire ..

protected void gvResults_Sorting(object sender, GridViewSortEventArgs e) 
    { 
     string sortExpression = e.SortExpression; 
     List<spGetCaseByNumberOrSurnameResult> data = Session["results"] as List<spGetCaseByNumberOrSurnameResult>; 
     if (sd == SortDirection.Ascending) 
     { 
      sd = SortDirection.Descending; 
      gvResults.DataSource = data.OrderBy(d => d.GetType().GetProperty(sortExpression)); 
     } 
     else 
     { 
      sd = SortDirection.Ascending; 
      gvResults.DataSource = data.OrderByDescending(d => d.GetType().GetProperty(sortExpression)); 
     } 
     gvResults.DataBind(); 
    } 

Malheureusement, cela ne fait aucun tri du tout .. en fait, des erreurs avec "La source de données ne prend pas en charge la pagination de données côté serveur."

des idées?

Répondre

4

d.GetType().GetProperty(sortExpression) renvoie un objet PropertyInfo. Ce dont vous avez besoin est la valeur de la propriété comme ceci:

d.GetType().GetProperty(sortExpression).GetValue(d, null);