明凯博客

关注网站技术,一个特立独行的程序员

ASP数字分页的实现方法

一直在做分页的时候都比较常用”首页 上页 下页 尾页”这种方式的来分页,像论坛那种很少用,所以一直也没考虑过,不过这次用到的时候,一时还真想不起来,于是在网上找了一会后,发现一个方法,比较容易理解,就贴出来大家一起分享。

分析:我们需要让导航条的导航页数不变,而导航范围随当前页码改变。

还要让当前页码变成红色且不带链接。

很显然不能够用一个简单的循环把页码从1到10的列出来。

想了很久,决定把整个导航代码分为三个部分:

1.位于当前页码前的部分;
2.当前页码;
3.位于当前页码后的部分。
  
问题的关键是要注意三个限制:

1.导航符合逻辑
2.符合记录数
3.符合范围限制

假定已建立记录集合theRs,并设置了数据分页。

下面开始代码!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
dim c1,c2       '定义两个变量,分别表示前后两部分的开始页码   
dim cc1,cc2     '分别定义前后两部分的结束页码   
'完成以上部分实际是限制导航范围的关键,   
'下面限制导航条显示15个页码链接,nowPage是当前页数,已经过正确性处理   
c1 = nowPage - 7     
c2 = nowPage + 7   
cc1 = nowPage - 1   
cc2 = nowPage + 1   
if c1 < 1 then    '此处很关键,它符合页数不小于1的要求   
    c1 = 1   
end if   
'开始第一部分的循环***************   
'由于要符合页数不小于1的要求,所以设置循环的step为-1   
    for i = cc1 to c1 step -1  
'pp是最后显示的数字。这一步不好理解。
但如果不这样处理,则会出现…  5.4.3.2.1的情况。
不符合我们1.2.3.4.5……的要求。
         pp = cc1 + c1 - i       
         Response.write "<a href=?Page=" & pp &">" & pp & ""    
    next   
    '本页页码加为红色,且不带链接   
    Response.write "<font color='red'>" & nowPage & "</font>" 
 
    '开始后部分的循环***************   
    for j = cc2 to c2   
         if j > theRs.pageCount then exit for   
         Response.write <a .................................(省略咯) & j & "</a>" 
    next
</a>

这样子就可以了,导航条显示15个页码链接。

,

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注