如何在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();
}
Run Code Online (Sandbox Code Playgroud)
此代码将在页面中显示所有页码.相反,我只需要显示一次页面编号.当我单击下一个按钮时,应显示下一个5页码.
由于您未指定所使用的确切语言和框架.我将尝试为您提供有关如何成功创建分页的一般答案.
我假设您有一个网站,或者如果它是一个Windows应用程序,您有一个下一个和上一个按钮.
您需要在应用程序中包含以下内容:
现在,如果您希望每页有20个项目,则将该数字除以20,如果剩下该部门,则您知道会有一个额外的页面.
例
ListSize = 10
AmountOfPages = ListSize / 20
if ( (ListSize % 20 ) != 0 )
AmountOfPages += 1;
Run Code Online (Sandbox Code Playgroud)
现在,当我们知道要打印多少页时,您可以决定是否打印它们,这当然是您的选择.
下一步是使用下一个和上一个按钮来处理当前索引的增量和减量.
每当您在列表寻呼机中按Previous,Next或Number时,您可以轻松计算当前的起始索引和结束索引.
因为您知道当前页面上的项目总数可以是20而最小索引是0.如果按照该规则执行,则可以始终执行以下操作:
index*20和index*20 + 20,用于获取列表的当前开始索引和列表的当前结束索引.
例
CurrentIndex = 0
ListStart = CurrentIndex * 20
ListEnd = CurrentIndex * 20 + 20
Run Code Online (Sandbox Code Playgroud)
这将导致:
ListStart = 0
ListEnd = 20
Run Code Online (Sandbox Code Playgroud)
如果您在Page Index 1上,您将获得以下内容
ListStart = 20
ListEnd = 40
Run Code Online (Sandbox Code Playgroud)
现在,您所要做的就是设置限制项目的数量以及开始获取项目的位置.
这当然取决于您的列表使用的数据源或数据模板.您应该查看您正在使用的模板或数据源的API.
但是,如果你在这里看一个基本的Pseudo语句,一般的想法:
select Columns from Source limit From, To
Run Code Online (Sandbox Code Playgroud)
您希望通过给定的开始和结束索引告诉您的数据源或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
}
Run Code Online (Sandbox Code Playgroud)
假设你有一个全局定义的Max Index,从上一个应该很容易的例子开始.
现在,如果你有
CurrentIndex = 0
Run Code Online (Sandbox Code Playgroud)
并调用doPaging(1)CurrentIndex的结果CurrentIndex = 5.现在,您可以使用它来重复可用于导航的当前索引.
关于SQL Server和限制行,您可以查看此内容
| 归档时间: |
|
| 查看次数: |
1931 次 |
| 最近记录: |