加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 对数据绑定集合或对象列表时对gridview进行排序

发布时间:2020-12-15 23:00:57 所属栏目:asp.Net 来源:网络整理
导读:我有一个GridView设置如下: 绑定到列表 T在代码隐藏(我使用我自己的定制BOL) 在HTML页面上没有DataSource对象 可以在我选择的每一列上排序(SortExpressions都设置正确) 但是,我收到以下错误消息: The GridView ‘myGridView’ fired event Sorting which w
我有一个GridView设置如下:

>绑定到列表< T>在代码隐藏(我使用我自己的定制BOL)
>在HTML页面上没有DataSource对象
>可以在我选择的每一列上排序(SortExpressions都设置正确)

但是,我收到以下错误消息:

The GridView ‘myGridView’ fired event Sorting which wasn’t handled.

什么是我最好的方法来获得我的List< T>允许排序?

我怀疑它将与OnSorting属性指定一个函数有关,即:

OnSorting = "MySortingMethod"

解决方法

感谢您的分类答案.我转向LINQ帮助动态排序.由于网格知道是否对ASC或DESC进行排序,哪个字段使用LINQ表达式.表达式执行排序,然后我简单地将这些结果绑定到我的gridview.

我怀疑jQuery方法会更快,不需要完整的回发.

using System.Linq.Expressions;

public SortDirection GridViewSortDirection
{
    get
    {
        if (ViewState["sortDirection"] == null)
            ViewState["sortDirection"] = SortDirection.Ascending;

        return (SortDirection)ViewState["sortDirection"];
    }
    set { ViewState["sortDirection"] = value; }
}

protected void gridView_Sorting(object sender,GridViewSortEventArgs e)
{
    //re-run the query,use linq to sort the objects based on the arg.
    //perform a search using the constraints given 
    //you could have this saved in Session,rather than requerying your datastore
    List<T> myGridResults = PerfomSearch();


    if (myGridResults != null)
    {
        var param = Expression.Parameter(typeof(T),e.SortExpression);
        var sortExpression = Expression.Lambda<Func<T,object>>(Expression.Convert(Expression.Property(param,e.SortExpression),typeof(object)),param);


        if (GridViewSortDirection == SortDirection.Ascending)
        {
            myGridView.DataSource = myGridResults.AsQueryable<T>().OrderBy(sortExpression);
            GridViewSortDirection = SortDirection.Descending;
        }
        else
        {
            myGridView.DataSource = myGridResults.AsQueryable<T>().OrderByDescending(sortExpression);
            GridViewSortDirection = SortDirection.Ascending;
        };


        myGridView.DataBind();
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读