繁体   English   中英

Gridview排序和分页。 如何保持分页?

[英]Gridview sorting and paging. How to keep the paging?

我想在gridView上进行排序和分页。

我看到了几个帖子,并尝试了以下操作:

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
        string sortExpression = e.SortExpression;
        ViewState["SortExpression"] = sortExpression;
        switch (e.SortExpression)
        {
            case "Debit":
                if (GridViewSortDirection == SortDirection.Ascending)
                {
                    GridViewSortDirection = SortDirection.Descending;
                    GridView1.AllowPaging = false;
                    GridView1.DataSource = getItems().OrderByDescending(x => x.Debit);
                    GridView1.DataBind();                        
                    GridView1.AllowPaging = true;
                }
                else
                {
                    GridViewSortDirection = SortDirection.Ascending;
                    GridView1.AllowPaging = false;
                    GridView1.DataSource = getItems().OrderBy(x => x.Debit);
                    GridView1.DataBind();                        
                    GridView1.AllowPaging = true;
                }
                break;
        }
    }

排序效果很好,但分页消失了。 绑定后,我将“ AllowPaging”属性设置为true,但是所有数据都放在一页上。 为什么?

编辑:如果删除“绑定”之前的“ AllowPaging”或设置为true,则发生异常:System.Web.dll中发生了类型为System.NotSupportedException的异常,但未在用户代码中处理附加信息:数据源不支持服务器端数据分页。

   GridView1.AllowPaging = false;                       
   GridView1.AllowPaging = true;

可能是您问题的根源。

IFelse语句中。

尝试添加GridView1.AllowPaging = true; DataBind()之前

GridView本身不支持排序。 这是由数据源完成的。 在GridView Web服务器控件中对数据进行排序

当数据绑定到GridView时,IQueryable(继承IEnumerable)不会分页和排序。

但是,您可以使用.ToList()扩展方法将IEnumerable集合转换为List实例。

更改此:

 GridView1.DataSource = getItems().OrderByDescending(x => x.Debit);

至:

 GridView1.DataSource = getItems().OrderByDescending(x => x.Debit).ToList();

将允许排序和分页工作。 (您可能需要添加Sorting事件)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM