(原创 vince6799)
在asp代码中分页是有点麻烦的事情,个人在在代码编写过程中把分页代码写成了两个函数,虽然在功能上不是很完善,但对于一般的应用应该是满足的了。
1
2'分页函数分为两个函数
3'CalcPage(totalrec,msg_per_page,currentpage,n,rowcount,PageRs) 分页计算函数
4'PageList(ListType,url,querry,Separator,ListLink) 分页列表函数
5
6'分页计算函数
7'totalrec 记录集总数
8'msg_per_page 每页显示的记录数,在调用CalcPage时需提前对该变量赋值
9'currentpage 当前页变量,在调用CalcPage时需提前对该变量赋值
10'n 总页数
11'rowcount 设置每一页的数据记录数
12'PageRs 记录集对象
13sub CalcPage(totalrec,msg_per_page,currentpage,n,rowcount,PageRs)
14n=0 '设置无记录时页数为0
15if currentpage="" then currentpage=0
16'PageRs.EOF and PageRs.bof 无记录
17'Not PageRs.EOF Or Not PageRs.BOF 有记录
18if Not PageRs.EOF Or Not PageRs.BOF then
19totalrec=PageRs.recordcount
20PageRs.pagesize=msg_per_page
21if totalrec mod msg_per_page = 0 then '计算总页数,recordcount:数据的总记录数
22n = totalrec\msg_per_page 'n:总页数
23else
24n = totalrec\msg_per_page+1
25end if
26if not isnumeric(currentpage) or currentpage="" then currentpage=1
27If currentpage <> "" then
28currentpage = cint(currentpage)
29end if
30if currentpage < 1 then
31currentpage = 1
32end if
33if currentpage*msg_per_page > totalrec and not((currentpage-1)*msg_per_page < totalrec) then
34currentPage=1
35end if
36PageRs.absolutepage = currentpage 'absolutepage:设置指针指向某页开头
37rowcount = PageRs.pagesize 'pagesize:设置每一页的数据记录数
38end if
39end sub
1
2'分页列表函数
3'url 跳转的地址
4'querry ?后的参数
5'Separator 分隔符
6'ListType 分页类型
7'类型:0 "第一页 | 前一页 | 下一页 | 最后页"
8'类型:1 "1 | 2 | 3 | 4 | ..........| 下一页"
9'类型:2 "第一页 | 前十页 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 后十页 | 最后页"
10'ListLink 链接使用的样式
11
12sub PageList(ListType,url,querry,Separator,ListLink)
13if Separator="" then Separator="|"
14if ListType="" then ListType="0"
15select case ListType
16case "0"
17response.write"第"¤tpage&"/"&n&"页 "
18response.write"共"&totalrec&"条信息 "
19if currentpage <= 1 then
20response.write"第一页 "&Separator&" "
21response.write"前一页 "&Separator&" "
22else
23response.write"
<a "&listlink&"""="" "&url&"?page='1&"&querry&"""' class="" href="">第一页</a>
1"&Separator&" "
2response.write"
<a "&listlink&"""="" "&url&"?page="¤tpage-1&" &"&querry&"""="" class="" href="">前一页</a>
1"&Separator&" "
2end if
3if currentpage = n then
4response.write"下一页 "&Separator&" "
5response.write"最后页 "
6else
7response.write"
<a "&listlink&"""="" "&url&"?page="¤tpage+1&" &"&querry&"""="" class="" href="">下一页</a>
1"&Separator&" "
2response.write"
<a "&listlink&"""="" "&url&"?page="&n&" &"&querry&"""="" class="" href="">最后页</a>
1"
2end if
3case "1"
4if currentpage < n then
5response.write"
<a "&listlink&"""="" "&url&"?page="¤tpage+1&" &"&querry&"""="" class="" href="">下一页</a>
1"
2else
3response.write"下一页 "
4end if
5for i=1 to n
6if cstr(i)=cstr(currentpage) then
7response.write "
<b>"&i&"</b>
1"&" "&Separator&" "
2else
3response.write"
<a "&listlink&"""="" "&url&"?page="&i&" &"&querry&"""="" class="" href="">"&i&"</a>
1"&Separator&" "
2end if
3next
4
5case "2"
6PageMerCout=10 '每次可翻的最大页数
7'取得记录的最大页码段
8if n mod PageMerCout=0 then
9MaxPageFiled=n\PageMerCout
10else
11MaxPageFiled=n\PageMerCout+1
12end if
13'判断当前页所在的页码段
14if currentpage mod PageMerCout =0 then
15CurrPageFiled=currentpage\PageMerCout
16else
17CurrPageFiled=currentpage\PageMerCout+1
18end if
19'取得当前页码段的最大页码和最小页码
20MaxPageNo=CurrPageFiled*PageMerCout
21MinPageNo=(CurrPageFiled-1)*PageMerCout+1
22'输出 “第一页 | 前十页 |”
23if currentpage<=1 then
24response.write"第一页 "&Separator&" "
25else
26response.write"
<a "&listlink&"""="" "&url&"?page='1&"&querry&"""' class="" href="">第一页</a>
1"&Separator&" "
2end if
3if CurrPageFiled<=1 then
4response.write"前十页 "&Separator&" "
5else
6response.write"
<a "&listlink&"""="" "&url&"?page="&MinPageNo-PageMerCout&" &"&querry&"""="" class="" href="">前十页</a>
1"&Separator&" "
2end if
3'输出当前页码段
4for i=MinPageNo to MaxPageNo
5if i<=n then
6if cstr(i)=cstr(currentpage) then
7response.write "
<b>"&i&"</b>
1"&" "&Separator&" "
2else
3response.write"
<a "&url&"?page="&i&" &"&querry&"""="" href="">"&i&"</a>
1"&Separator&" "
2end if
3end if
4next
5'输出 “后十页 | 最后页”
6if CurrPageFiled>=MaxPageFiled then
7response.write"后十页 "&Separator&" "
8else
9response.write"
<a "&listlink&"""="" "&url&"?page="&MaxPageNo+1&" &"&querry&"""="" class="" href="">后十页</a>
1"&Separator&" "
2end if
3if currentpage>=n then
4response.write"最后页 "
5else
6response.write"
<a "&listlink&"""="" "&url&"?page="&n&" &"&querry&"""="" class="" href="">最后页</a>
1"
2end if
3end select
4end sub