代码之家  ›  专栏  ›  技术社区  ›  nat

对绑定到Linq SP的GridView进行排序

  •  3
  • nat  · 技术社区  · 14 年前

    我将一个网格绑定到一个Linqed SP,因此:

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

    在整理的时候,我想能够做到这一点。

        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();
        }
    

    遗憾的是,这根本不做任何排序……事实上,它在 “数据源不支持服务器端数据分页。”

    有什么想法吗?

    1 回复  |  直到 14 年前
        1
  •  4
  •   jordanbtucker    14 年前

    d.GetType().GetProperty(sortExpression) 返回 PropertyInfo 对象。你需要的是像这样的财产的价值:

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