在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

%>

 

  1. 1