ASP用于分页的两个函数

王朝asp·作者佚名  2006-11-24
宽屏版  字体: |||超大  

在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"第"&currentpage&"/"&n&"页&nbsp;&nbsp;"

response.write"共"&totalrec&"条信息&nbsp;&nbsp;"

if currentpage <= 1 then

response.write"第一页&nbsp;"&Separator&"&nbsp;"

response.write"前一页&nbsp;"&Separator&"&nbsp;"

else

response.write"<a href="""&url&"?page=1&"&querry&""" class="""&ListLink&""">第一页</a>&nbsp;"&Separator&"&nbsp;"

response.write"<a href="""&url&"?page="&currentpage-1&"&"&querry&""" class="""&ListLink&""">前一页</a>&nbsp;"&Separator&"&nbsp;"

end if

if currentpage = n then

response.write"下一页&nbsp;"&Separator&"&nbsp;"

response.write"最后页&nbsp;"

else

response.write"<a href="""&url&"?page="&currentpage+1&"&"&querry&""" class="""&ListLink&""">下一页</a>&nbsp;"&Separator&"&nbsp;"

response.write"<a href="""&url&"?page="&n&"&"&querry&""" class="""&ListLink&""">最后页</a>&nbsp;"

end if

case "1"

if currentpage < n then

response.write"<a href="""&url&"?page="&currentpage+1&"&"&querry&""" class="""&ListLink&""">下一页</a>&nbsp;"

else

response.write"下一页&nbsp;"

end if

for i=1 to n

if cstr(i)=cstr(currentpage) then

response.write "<b>"&i&"</b>"&"&nbsp;"&Separator&"&nbsp;"

else

response.write"<a href="""&url&"?page="&i&"&"&querry&""" class="""&ListLink&""">"&i&"</a>&nbsp;"&Separator&"&nbsp;"

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"第一页&nbsp;"&Separator&"&nbsp;"

else

response.write"<a href="""&url&"?page=1&"&querry&""" class="""&ListLink&""">第一页</a>&nbsp;"&Separator&"&nbsp;"

end if

if CurrPageFiled<=1 then

response.write"前十页&nbsp;"&Separator&"&nbsp;"

else

response.write"<a href="""&url&"?page="&MinPageNo-PageMerCout&"&"&querry&""" class="""&ListLink&""">前十页</a>&nbsp;"&Separator&"&nbsp;"

end if

'输出当前页码段

for i=MinPageNo to MaxPageNo

if i<=n then

if cstr(i)=cstr(currentpage) then

response.write "<b>"&i&"</b>"&"&nbsp;"&Separator&"&nbsp;"

else

response.write"<a href="""&url&"?page="&i&"&"&querry&""">"&i&"</a>&nbsp;"&Separator&"&nbsp;"

end if

end if

next

'输出 “后十页 | 最后页”

if CurrPageFiled>=MaxPageFiled then

response.write"后十页&nbsp;"&Separator&"&nbsp;"

else

response.write"<a href="""&url&"?page="&MaxPageNo+1&"&"&querry&""" class="""&ListLink&""">后十页</a>&nbsp;"&Separator&"&nbsp;"

end if

if currentpage>=n then

response.write"最后页&nbsp;"

else

response.write"<a href="""&url&"?page="&n&"&"&querry&""" class="""&ListLink&""">最后页</a>&nbsp;"

end if

end select

end sub

%>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有