用于分页的两个Asp函数

时间:2007-09-07 10:09:00 

在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
%>


相关阅读:

ASP分页技术详解

ASP中3种分页显示的性能比较

标签:分页,asp
0
投稿

猜你喜欢

  • ASP技巧:Script块不能放在另一个Script 块内

    2009-08-19 17:17:00
  • 用好FrontPage2003的九大功能

    2008-02-21 14:29:00
  • my sql存储过程学习总结

    2011-07-12 19:12:35
  • 百度的图片轮换JS代码,支持FF

    2007-11-16 16:24:00
  • 解析SQL Server 2008中的新语句:MERGE

    2009-01-13 13:57:00
  • 谈ASP的未来

    2009-03-24 20:35:00
  • 小白讲座:在win下mysql备份恢复命令概括

    2009-09-05 09:43:00
  • ASP怎么谈到应用到类的?

    2008-03-10 11:21:00
  • SQL Server中应当怎样得到自动编号字段

    2009-01-15 12:48:00
  • Web设计师的出路问题

    2009-06-08 13:07:00
  • 最简便的备份MySQL数据库的方法

    2008-12-25 13:16:00
  • 关于基于字体大小(em)的设计

    2008-06-17 15:01:00
  • ASP写的汉字转换为UTF-8的一段代码

    2009-07-05 18:49:00
  • 9个Web设计中常见的可用性错误[译]

    2009-03-11 20:25:00
  • 在MySQL数据库中如何修改密码及访问限制

    2008-11-27 16:36:00
  • mysql proxy问题

    2009-02-27 15:54:00
  • 巧妙规划使用Oracle数据空间

    2009-03-20 11:51:00
  • 写给喜欢用DW编写CSS人的一些建议

    2008-05-19 12:09:00
  • Oracle的数据字典技术简析

    2010-07-20 13:03:00
  • HTTP 错误 500.100 - 内部服务器错误 - ASP 错误

    2008-09-12 13:07:00
  • asp之家 网络编程 m.aspxhome.com