由于您没有指定您正在使用的确切语言和框架。我会试着给你一个关于如何成功创建分页的一般答案。
我假设你有一个网站,或者如果它是一个Windows应用程序,你有一个Next和Previous按钮。
你需要在你的应用程序如下:
现在如果你想每页有20个项目,你通过20把数如果该部门的其余部分存在,则知道会有一个额外的页面。
例
ListSize = 10
AmountOfPages = ListSize/20
if ((ListSize % 20) != 0)
AmountOfPages += 1;
现在,当我们知道有多少页打印出来,你可以decied到全部打印出来或者没有,那当然是你的选择。
下一步将是有一个下一个和上一个按钮处理当前索引的增量和减量。
每当您按下上一个,下一个或您的列表传呼机中的号码,您都可以轻松计算当前开始索引和结束索引。
既然你知道你的当前页面上的项目的总金额可以在20和最小的指数为0。如果你去了这个规则,你总是可以做:
指数* 20指数* 20 + 20以获取列表的当前开始索引和列表的当前结束索引。
例
CurrentIndex = 0
ListStart = CurrentIndex * 20
ListEnd = CurrentIndex * 20 + 20
这将导致:
ListStart = 0
ListEnd = 20
而且如果你在页面索引1你会得到以下
ListStart = 20
ListEnd = 40
现在你要做的是设置限制多少项目以及从哪里开始获取这几项。
这当然取决于用于列表的数据源或数据模板。您应该查看您正在使用的模板或数据源的API。
但是,如果你看一个基本伪声明这里的总体思路:
select Columns from Source limit From, To
你要告诉您的数据源或SQL查询来只是通过给定的起始限制和结束索引。上面的例子比其他数据源更适用于SQL。但它应该给你一个关于如何解决问题的想法。
编辑
据我所知你重新发布你想获得1 - 5,当你在第一页上,这些都是当然的页面索引。如果你按下Next你想要6-10。
如果你仔细想想,如果你遵循上面的逻辑,你就没有那么难,你有页索引并且你想要做的就是每次加5你按下“下一步”,当你按下“上一个”时减少5。
这将导致在一定程度上
例
doPaging(int direction)
{
// Direction represents the previous and next to make it easier
if (direction == 0) // previous
CurrentIndex -= 5
else if (direction == 1) // next
CurrentIndex += 5
if (CurrentIndex > MaxIndex || CurrentIndex < 0)
CurrentIndex = 0
}
假设您已经定义全局最大指数,从前面的例子,应该是很容易以下。现在,如果你有
CurrentIndex = 0
并调用doPaging(1)
CURRENTINDEX的结果将是CurrentIndex = 5
。现在您可以使用它来重复可用于导航的当前索引。
关于SQL Server和限制行,你可以look into this
什么语言/框架? – 2009-10-20 09:16:24
我正在做ASPNET(DOTNET) – Nila 2009-10-20 09:28:46
请告诉我们您正在使用什么样的数据源,SQL Server? LINQ to SQL?对象数组? – 2009-10-20 09:32:22