在asp代码中分页是有点麻烦的事情,个人在在代码编写过程中把分页代码写成了两个函数,虽然在功能上不是很完善,但对于一般的应用应该是满足的了。
<%
分页函数分为两个函数
calcpage(totalrec,msg_per_page,currentpage,n,rowcount,pagers) 分页计算函数
pagelist(listtype,url,querry,separator,listlink) 分页列表函数
分页计算函数
totalrec 记录集总数
msg_per_page 每页显示的记录数,在调用calcpage时需提前对该变量赋值
currentpage 当前页变量,在调用calcpage时需提前对该变量赋值
n 总页数
rowcount 设置每一页的数据记录数
pagers 记录集对象
sub calcpage(totalrec,msg_per_page,currentpage,n,rowcount,pagers)
n=0 设置无记录时页数为0
if currentpage=”” then currentpage=0
pagers.eof and pagers.bof 无记录
not pagers.eof or not pagers.bof 有记录
if not pagers.eof or not pagers.bof then
totalrec=pagers.recordcount
pagers.pagesize=msg_per_page
if totalrec mod msg_per_page = 0 then 计算总页数,recordcount:数据的总记录数
n = totalrec\msg_per_page n:总页数
else
n = totalrec\msg_per_page+1
end if
if not isnumeric(currentpage) or currentpage=”” then currentpage=1
if currentpage <> “” then
currentpage = cint(currentpage)
end if
if currentpage < 1 then
currentpage = 1
end if
if currentpage*msg_per_page > totalrec and not((currentpage-1)*msg_per_page < totalrec) then
currentpage=1
end if
pagers.absolutepage = currentpage absolutepage:设置指针指向某页开头
rowcount = pagers.pagesize pagesize:设置每一页的数据记录数
end if
end sub
%>
<%
分页列表函数
url 跳转的地址
querry ?后的参数
separator 分隔符
listtype 分页类型
类型:0 “第一页 | 前一页 | 下一页 | 最后页”
类型:1 “1 | 2 | 3 | 4 | ……….| 下一页”
类型:2 “第一页 | 前十页 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 后十页 | 最后页”
listlink 链接使用的样式
sub pagelist(listtype,url,querry,separator,listlink)
if separator=”” then separator=”|”
if listtype=”” then listtype=”0″
select case listtype
case “0”
response.write”第”¤tpage&”/”&n&”页 ”
response.write”共”&totalrec&”条信息 ”
if currentpage <= 1 then
response.write”第一页 ”&separator&” ”
response.write”前一页 ”&separator&” ”
else
response.write”<a href=”””&url&”?page=1&”&querry&””” class=”””&listlink&”””>第一页</a> ”&separator&” ”
response.write”<a href=”””&url&”?page=”¤tpage-1&”&”&querry&””” class=”””&listlink&”””>前一页</a> ”&separator&” ”
end if
if currentpage = n then
response.write”下一页 ”&separator&” ”
response.write”最后页 ”
else
response.write”<a href=”””&url&”?page=”¤tpage+1&”&”&querry&””” class=”””&listlink&”””>下一页</a> ”&separator&” ”
response.write”<a href=”””&url&”?page=”&n&”&”&querry&””” class=”””&listlink&”””>最后页</a> ”
end if
case “1”
if currentpage < n then
response.write”<a href=”””&url&”?page=”¤tpage+1&”&”&querry&””” class=”””&listlink&”””>下一页</a> ”
else
response.write”下一页 ”
end if
for i=1 to n
if cstr(i)=cstr(currentpage) then
response.write “<b>”&i&”</b>”&” ”&separator&” ”
else
response.write”<a href=”””&url&”?page=”&i&”&”&querry&””” class=”””&listlink&”””>”&i&”</a> ”&separator&” ”
end if
next
case “2”
pagemercout=10 每次可翻的最大页数
取得记录的最大页码段
if n mod pagemercout=0 then
maxpagefiled=n\pagemercout
else
maxpagefiled=n\pagemercout+1
end if
判断当前页所在的页码段
if currentpage mod pagemercout =0 then
currpagefiled=currentpage\pagemercout
else
currpagefiled=currentpage\pagemercout+1
end if
取得当前页码段的最大页码和最小页码
maxpageno=currpagefiled*pagemercout
minpageno=(currpagefiled-1)*pagemercout+1
输出 “第一页 | 前十页 |”
if currentpage<=1 then
response.write”第一页 ”&separator&” ”
else
response.write”<a href=”””&url&”?page=1&”&querry&””” class=”””&listlink&”””>第一页</a> ”&separator&” ”
end if
if currpagefiled<=1 then
response.write”前十页 ”&separator&” ”
else
response.write”<a href=”””&url&”?page=”&minpageno-pagemercout&”&”&querry&””” class=”””&listlink&”””>前十页</a> ”&separator&” ”
end if
输出当前页码段
for i=minpageno to maxpageno
if i<=n then
if cstr(i)=cstr(currentpage) then
response.write “<b>”&i&”</b>”&” ”&separator&” ”
else
response.write”<a href=”””&url&”?page=”&i&”&”&querry&”””>”&i&”</a> ”&separator&” ”
end if
end if
next
输出 “后十页 | 最后页”
if currpagefiled>=maxpagefiled then
response.write”后十页 ”&separator&” ”
else
response.write”<a href=”””&url&”?page=”&maxpageno+1&”&”&querry&””” class=”””&listlink&”””>后十页</a> ”&separator&” ”
end if
if currentpage>=n then
response.write”最后页 ”
else
response.write”<a href=”””&url&”?page=”&n&”&”&querry&””” class=”””&listlink&”””>最后页</a> ”
end if
end select
end sub
%>