【问题标题】:Gridview sorting and paging. How to keep the paging?Gridview 排序和分页。如何保持分页?
【发布时间】:2014-09-14 07:30:26
【问题描述】:

我想在我的 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”类型的异常,但未在用户代码中处理附加信息: 数据源不支持服务端数据分页。

【问题讨论】:

  • 为什么要关闭和打开分页?你不能一直开着吗?
  • 我的网格有一个基本的分页,当我排序时,我会关闭分页,否则会出现异常。

标签: c# asp.net gridview


【解决方案1】:
   GridView1.AllowPaging = false;                       
   GridView1.AllowPaging = true;

可能是您的问题的根源。

IF else 语句中。

【讨论】:

  • 当然,如果这两个都需要添加,那么它不需要在其中任何一个中
【解决方案2】:

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

【讨论】:

  • 我有一个异常:System.Web.dll 中发生了“System.NotSupportedException”类型的异常,但未在用户代码中处理附加信息:数据源不支持服务器端数据分页.
  • getItems() 返回什么?
  • 这是一种根据“RadioButtonList”和“Checkbox”恢复数据的方法。它返回我的个人对象 (View_1) 的数组。
【解决方案3】:

GridView 本身不支持排序。这是由数据源完成的。 Sorting Data in a GridView Web Server Control

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

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

改变这个:

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

到:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-20
    • 2012-08-23
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多