2009-10-20 91 views
-3

如何在Datalist中进行寻呼。我需要页码如下:在Datalist中寻呼

< 1 2 3 4 5> 当点击“>”未来5页应该显示...

让我清除我的编码流......我会名单从数据库使用存储过程和整个记录。然后,根据页数,应该显示页码。我只需要在页面中显示有限数量的页码。 当我点击下一个按钮时,应该显示下一组页码。我的存储过程将返回数据集。 这是我的传呼代码..

私人无效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个页码。

+2

什么语言/框架? – 2009-10-20 09:16:24

+0

我正在做ASPNET(DOTNET) – Nila 2009-10-20 09:28:46

+0

请告诉我们您正在使用什么样的数据源,SQL Server? LINQ to SQL?对象数组? – 2009-10-20 09:32:22

回答

5

由于您没有指定您正在使用的确切语言和框架。我会试着给你一个关于如何成功创建分页的一般答案。

我假设你有一个网站,或者如果它是一个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