如何在Datalist中进行分页。我需要页码如下:
< 1 2 3 4 5> 点击“>”时接下来的5页应该显示......
让我清除我的编码流程......我将使用包含整个记录的存储过程从数据库中获取列表。然后,根据页数,应显示页码。我只需要在页面中显示有限数量的页码。 当我点击下一个按钮时,应显示下一组页码。我的存储过程将返回数据集。 这是我的Paging代码..
private void doPaging() {
DataTable dt = new DataTable();
dt.Columns.Add("PageIndex");
dt.Columns.Add("PageText");
for (int i = 0; i <= totalpage; i++)
{
DataRow dr = dt.NewRow();
dr[0] = i;
dr[1] = i + 1;
dt.Rows.Add(dr);
}
dlPaging.DataSource = dt;
dlPaging.DataBind();
}
此代码将在页面中显示一次所有页码。相反,我只需要显示一次的5个页码。当我点击下一个按钮时,应显示接下来的5个页码。
答案 0 :(得分:5)
由于您未指定所使用的确切语言和框架。我将尝试为您提供有关如何成功创建分页的一般答案。
我假设您有一个网站,或者如果它是一个Windows应用程序,您有一个下一个和上一个按钮。
您需要在申请中包含以下内容:
现在,如果您希望每页有20个项目,则将该数字除以20,如果剩下该部门,则您知道会有一个额外的页面。
示例强>
ListSize = 10
AmountOfPages = ListSize / 20
if ( (ListSize % 20 ) != 0 )
AmountOfPages += 1;
现在,当我们知道要打印多少页时,您可以决定是否全部打印,这当然是您的选择。
下一步是让下一个和上一个按钮处理当前索引的增量和减量。
每当您在列表寻呼机中按Previous,Next或Number时,您可以轻松计算当前的起始索引和结束索引。
因为您知道当前页面上的项目总数可以是20而最小索引是0.如果按照该规则执行,则可以随时执行:
索引* 20和索引* 20 + 20,以获取列表的当前开始索引和列表的当前结束索引。
示例强>
CurrentIndex = 0
ListStart = CurrentIndex * 20
ListEnd = CurrentIndex * 20 + 20
这将导致:
ListStart = 0
ListEnd = 20
如果您在Page Index 1上,您将获得以下
ListStart = 20
ListEnd = 40
现在您要做的就是设置限制项目的数量以及从哪里开始获取项目。
这当然取决于您的列表使用的数据源或数据模板。您应该查看您正在使用的模板或数据源的API。
但是如果你在这里查看一个基本的 Pseudo语句,一般的想法是:
select Columns from Source limit From, To
您希望通过给定的开始和结束索引告诉您的数据源或SQL查询仅限于限制。上面的示例比其他数据源更适用于SQL。但它应该让你知道如何解决问题。
修改强>
根据我的理解,你重新发帖,当你在第一页时想要得到1 - 5,当然这些是页面索引。如果按下“下一步”,则需要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
}
假设你有一个全局定义的Max Index,从上一个应该很容易的例子开始。
现在,如果你有
CurrentIndex = 0
并致电doPaging(1)
,CurrentIndex的结果为CurrentIndex = 5
。现在,您可以使用它来重复当前可用的索引以导航到。
关于SQL Server和限制行,您可以look into this