`
feiliboos
  • 浏览: 659673 次
文章分类
社区版块
存档分类
最新评论

ASP分页类

 
阅读更多

在asp代码中分页是有点麻烦的事情,这是之前的asp分页函数的类方式,如有问题竟联系我(vince6799@hotmail.com)或到本站获取最新信息(www.miplat.com)。

page_list.asp
<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>
class Page_List
private Sub Class_Initialize
Version="ASP分页类 Version 1.0"
end sub
Private Sub Class_Terminate
Version=""
end sub
'分页函数分为两个函数
'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 记录集对象
public sub CalcPage(totalrec,msg_per_page,currentpage,n,rowcount,PageRs)
n=0 '设置无记录时页数为0
totalrec=0
if msg_per_page="" then msg_per_page=10
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:设置每一页的数据记录数
else
currentpage=0
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 链接使用的样式

public 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 MinPageNo<0 then MinPageNo=0
'输出 “第一页 | 前十页 |”
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
end class
</SCRIPT>

使用例子:
<!--#include file="conn.asp"-->
<!--#include file="page_list.asp"-->
<%
set plist=new page_list

set rs=server.createobject("adodb.recordset")
sql="select * from news "
rs.open sql,conn,3,1
plist.CalcPage totalrec,msg_per_page,currentpage,n,rowcount,rs

while not Rs.eof and rowcount>0
response.write rs(0)&"."&rs(1)&"<br>"
Rs.movenext
rowcount=rowcount-1
wend
response.write"<br>"
ListType="0"
url=""
querry=""
separator="|"
ListLink=""
plist.PageList ListType,url,querry,Separator,ListLink
%>

使用例子:
<!--#include file="conn.asp"-->
<!--#include file="page_list.asp"-->
<%
set plist=new page_list

set rs=server.createobject("adodb.recordset")
sql="select * from news "
rs.open sql,conn,3,1
plist.CalcPage totalrec,msg_per_page,currentpage,n,rowcount,rs

while not Rs.eof and rowcount>0
response.write rs(0)&"."&rs(1)&"<br>"
Rs.movenext
rowcount=rowcount-1
wend
response.write"<br>"
ListType="0"
url=""
querry=""
separator="|"
ListLink=""
plist.PageList ListType,url,querry,Separator,ListLink
%>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics