在Datalist中分页

时间:2009-10-20 09:15:37

标签: paging

如何在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个页码。

1 个答案:

答案 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