【发布时间】:2011-06-02 12:03:11
【问题描述】:
我一直在寻找一个很好的教程来教我如何使用简单的 DataBound 控件(如 Repeater)制作自定义分页控件,以实现高性能分页功能。
我找到了很多关于这个问题的文章,但没有一篇是完整的答案。
-
Paging of Large Resultsets in ASP.NET
这个很棒,在不同的方法之间有统计数据和很好的比较,但问题是在 SQL Server 有它的新函数 ROW_NUMBER() 之前它太旧了
-
这个几乎是完美的,但他使用了网格现有的分页功能和自定义的分页方法,而不是中继器。
-
Custom SEO friendly paging with ASP.NET Repeater or DataList control
我认为这个太复杂了,事情可以做得更容易
我正在使用 SQL、Items Repeater(在代码隐藏中直接绑定,不使用数据源)、PageNumbers 中继器(它将有一个链接作为 ItemTemplate 来传递查询字符串,因此使用的方法可以检索下一部分Items),一个保存当前页码和标题的标签。
我一直在尝试在N-Layered Web Applications with ASP.NET 3.5 Part 4: Sorting, Paging and Filtering (The Database Paging Section and ignore the rest) 上实现示例。到目前为止,我已经在我的 Data Access Lyaer 中创建了一个如下所示的 SQL 命令:
WITH Records AS ( SELECT ItemId, ItemName, ROW_NUMBER() OVER (ORDER BY ItemId) AS 'RowNumber' FROM Items) SELECT * FROM Records WHERE (RowNumber BETWEEN (@startIndex) AND @startIndex + @pageSize - 1)
但现在我被困在如何在我的表示层中使用它!
【问题讨论】:
-
查看您的上一个示例,您在实施它时遇到了哪些问题?它需要一个带有 id、startindex 和 pagesize 的方法。
-
在中继器中分页是我在过去 4 份工作中必须教给人们的东西,没有关于使用中继器的好文章,我想我会把它作为我的下一篇博客文章.
-
@gbs- 让我浏览页面的中继器是我的问题。确切地说,我不知道应该为 startIndex 参数分配什么值以及如何分配!
-
菲尔-那太好了!我希望它会很快完成,完成后请与我们分享。
-
@lKashef - 我要到 2 月初才能完成,项目的截止日期是 2 月 1 日。完成后将在此处使用链接发表评论。
标签: c# asp.net sql performance optimization