【问题标题】:Custom paging/sorting for GridView filled by CodeBehind Datasource?由 CodeBehind 数据源填充的 GridView 的自定义分页/排序?
【发布时间】:2011-05-10 01:02:39
【问题描述】:

我正在编写一个报告页面。在此页面中,有两个日期字段供用户过滤日期,GridView 根据 CodeBehind 中的这些日期填充(当用户单击按钮视图时)。现在我想为此 GridView 实现分页/排序功能。我进行了研究,发现 GridView 的默认分页效率不是很高(我的报告表可能有数千条记录)和自定义分页,但这需要使用 ObjectDataSource(我不使用)。因此,任何人都可以向我推荐一些最适合这种情况的方法吗?一些教程将不胜感激:)

谢谢,

【问题讨论】:

    标签: asp.net gridview pagination paging custompaging


    【解决方案1】:

    假设您将记录存储在数据库中,我将获取记录计数并将该数字用于分页。然后我会查询我想在每一页上看到的那些。

    string.Format(@"
        SELECT TOP {0} * FROM Records WHERE pkId NOT IN (
            SELECT TOP {1} pkId FROM Records ORDER BY pkId
        ) ORDER BY pkId;",
        upperBoundary,
        lowerBoundary
    );
    

    例如,upperBoundary 将是 lowerBoundary + itemsPerPage。使用 MSSQL,我们没有 MySQL 的 LIMIT 功能的奢侈,但这也是一样的。

    缩小日期,就像

    SELECT * FROM Records WHERE Date > earlyDate AND Date <= lateDate
    

    这是我认为最有效的方式,因为它导致的流量很少,如果你缓存记录数,你也不会有很多查询。

    【讨论】:

    • 在 Mssql 2005 以后,您可以使用 row_number 来选择一个子集,而不是运行多个 select 语句。
    • 环顾四周后,我找不到使用 row_number() 进行同样或更简单查询的示例。虽然这些示例看起来更精确,但查询看起来更复杂。
    猜你喜欢
    • 1970-01-01
    • 2013-01-27
    • 2012-09-14
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多