排序的GridView动态LINQ [英] sort gridview with dynamic linq

查看:113
本文介绍了排序的GridView动态LINQ的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有几个专栏,我想其中有3个排序的GridView。
为数据源在会议召开。

I have a gridview with several columns, 3 of which I'd like to sort. The source for the data is held in the session.

protected void MyGridHistorySort(object sender, GridViewSortEventArgs e)
{
    var TheColumn = (e.SortExpression).ToString();

    TheDataHistory = (List<ViewDataHistoryModel>)Session["SessionDataHistory"];

    var test = "data.DataDate";

    var NewDataSource = from data in TheDataHistory
                    orderby test
                    select data;

    MyGridHistory.DataSource = NewDataSource;
    MyGridHistory.DataBind();

DataDate是列表中的一个有效的列,但的OrderBy语句不起作用。理想情况下,我想它写类似的测试=带可变TheColumn排序+ TheColum的数据。然后添加基于一个布尔值的排序方向。我看着排序依据扩展方法NewDataSource.OrderBy(试验);但这并不能工作。

DataDate is a valid column in the list but the orderby statement doesn't work. Ideally, I'd like it to sort with the variable TheColumn by writing something like test = "data."+TheColum; and then add a sort direction based on a boolean. I looked at the OrderBy extension method NewDataSource.OrderBy(test); but that doesn't work either.

我缺少什么让我的code的工作?

What am I missing to make my code work?

感谢。

推荐答案

它看起来像你需要有

var NewDataSource = from data in TheDataHistory
                    orderby data.DataDate
                    select data;

由于排序依据条款需要一个属性名。该条款不解析字符串来确定像动态可查询一样。

Since the orderby clause takes a property name. The clause doesn't parse the string to determine what to order by like Dynamic Queryable does.

或者,在多个领域进行排序的情况下,我会用

Or, in the case of sorting on multiple fields, I would use

var NewDataSource = from data in TheDataHistory
                    select data;

switch(fieldToSortOn)
{
  case "field1":
    NewDataSource = NewDataSource.OrderBy(x => x.Field1);
    break;
  case "field2":
    NewDataSource = NewDataSource.OrderBy(x => x.Field2);
    break;

  ...

}

如果你是只使用一个字符串进行排序这真的弯曲,那么我会完全推荐<一个href=\"http://www.hanselman.com/blog/TheWeeklySource$c$c48DynamicQueryableMakesCustomLINQEx$p$pssionsEasier.aspx\"相对=nofollow>动态可查询库。我一直在使用它,它是完美的东西我一直在做最近(与日期时间?对象增加了一些支持)

If you are really bent on just using a string to sort this, then I would totally recommend the Dynamic Queryable library. I've been using it and it's perfect for what I've been doing lately (with some added support for DateTime? objects)

然后,你可以做这样的事情。

Then you can do things like

NewDataSource = NewDataSource.DynamicOrderBy("ID DESC, Name DESC, Price ASC");

爱这个库!

这篇关于排序的GridView动态LINQ的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆