C# Gridview排序和分页。如何保持寻呼?

C# Gridview排序和分页。如何保持寻呼?,c#,asp.net,gridview,C#,Asp.net,Gridview,我想在gridView上进行排序和分页 我看到了几篇帖子,我试着这样做: protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) { string sortExpression = e.SortExpression; ViewState["SortExpression"] = sortExpression; switch (e.SortExpressi

我想在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”或在“Binding”之前设置为true,我会遇到一个异常:System.Web.dll中发生了类型为“System.NotSupportedException”的异常,但未在用户代码中处理。其他信息:数据源不支持服务器端数据分页

   GridView1.AllowPaging = false;                       
   GridView1.AllowPaging = true;
可能是你问题的根源


IFelse语句中。

尝试添加GridView1.allowpage=true IQueryable(继承IEnumerable)在数据绑定到GridView时不会分页和排序

但您可以使用
.ToList()
扩展方法将IEnumerable集合转换为列表实例

改变这一点:

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


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

我有一个异常:System.Web.dll中发生了类型为“System.NotSupportedException”的异常,但未在用户代码中处理。其他信息:数据源不支持服务器端数据分页。getItems()返回什么?这是一种在“RadioButtonList”和“Checkbox”。它返回我的个人对象数组(视图1)。为什么要关闭和打开分页?你不能一直打开它吗?我的网格有一个基本分页,当我排序时,我会关闭分页,否则我会有一个例外。当然,如果这两个都需要添加,那么它就不需要在其中任何一个中
 GridView1.DataSource = getItems().OrderByDescending(x => x.Debit).ToList();