ASP常用的分页方法

    这种分页方法是:将数据库中所有符合查询条件的记录一次性的都读入 recordset 中,存放在内存中,然后通过 ADO Recordset 对象所提供的几个专门支持分页处理的属性: PageSize、PageCount以及 AbsolutePage来管理分页处理。

此分页方法用到的几个Recordset 属性
pagesize……定义一页显示记录的条数(自己设定)
recordcount……返回记录总数
pagecount……返回总页数
AbsolutePage ……设置此属性以移动到某一页的第一个记录。

实例:

<% strsql = "…………………"  'sql查询语句
  Set rs=Server.Createobject("ADODB.RECORDSET")
  rs.Open sql, conn, 
11
   maxperpage
=50
  
if not rs.eof then
  rs.pageSize 
= maxperpage    '设定每页显示的记录数
   totalnumber=rs.recordcount   '取得记录总数,赋值给totalnumber
   sumpages = rs.pageCount    '取得总页数,赋值给sumpages
   CurrentPage = Request.QueryString("page")   '通过浏览器地址取得所要显示页码
   '针对页码值的取值范围进行处理
   if isEmpty(page) or Cint(page) <1 then
   CurrentPage 
= 1
  
elseif Cint(page) >sumpages then
   CurrentPage 
= sumpages 
  
end if
  rs.AbsolutePage 
= page   '移动到显示页的第一个记录
    i=0
  
Do while not rs.eof and i<maxperpage 
    response.Write(rs(
"??"))  '显示页面数据
   rs.MoveNext
  
Loop
  
else
  Response.Write(
"没此内容")
  
End if
  rs.Close
  
Set rs = Nothing 
   showpage(totalnumber,maxperpage,
1,1,""'调用过程showpage显示显示“上一页 下一页”等信息
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
***********************************************
'
过程名:showpage
'
作  用:显示“上一页 下一页”等信息
'
参  数:totalnumber ----数据总数量
'
       maxperpage  ----每页显示数量
'
       ShowTotal   ----是否显示总数量(1显示)
'
       ShowAllPages ---是否用下拉列表显示所有页面以供跳转(1显示)。
'
       strUnit     ----计数单位
'
***********************************************
sub showpage(totalnumber,maxperpage,ShowTotal,ShowAllPages,strUnit)
 
dim n, i,strTemp,strUrl
 
if totalnumber mod maxperpage=0 then
     n
= totalnumber \ maxperpage
   
else
     n
= totalnumber \ maxperpage+1
   
end if
   strTemp
= "<table align='center'><tr><td>"
 
if ShowTotal=1 then 
  strTemp
=strTemp & "共 <b>" & totalnumber & "</b> " & strUnit & "&nbsp;&nbsp;"
 
end if
 strUrl
=GetURL("page=")
   
if CurrentPage<2 then
      strTemp
=strTemp & "首页 上一页&nbsp;"
   
else
      strTemp
=strTemp & "<a href='" & strUrl & "1'>首页</a>&nbsp;"
      strTemp
=strTemp & "<a href='" & strUrl & (CurrentPage-1& "'>上一页</a>&nbsp;"
   
end if
   
if n-currentpage<1 then
      strTemp
=strTemp & "下一页 尾页"
   
else
      strTemp
=strTemp & "<a href='" & strUrl &(CurrentPage+1& "'>下一页</a>&nbsp;"
      strTemp
=strTemp & "<a href='" & strUrl & n & "'>尾页</a>"
   
end if
    strTemp
=strTemp & "&nbsp;页次:<strong><font color=red>" & CurrentPage & "</font>/" & n & "</strong>页 "
    strTemp
=strTemp & "&nbsp;<b>" & maxperpage & "</b>" & strUnit & "/页"
 
if ShowAllPages=1 then
  strTemp
=strTemp & "&nbsp;转到:<select class='input' name='page' size='1' onchange=""javascript:window.***='" & strUrl &  "'+this.options[this.selectedIndex].value;"">"   
     
for i = 1 to n   
      strTemp
=strTemp & "<option value='" & i & "'"
   
if cint(CurrentPage)=cint(i) then strTemp=strTemp & " selected "
   strTemp
=strTemp & ">第" & i & "页</option>"   
     
next
  strTemp
=strTemp & "</select>"
 
end if
 strTemp
=strTemp & "</td></tr></table>"
 response.write strTemp
end sub
'***********************************************
'
函数名:GetURL
'
作  用:获得当前网址并判断向地址中加入 ? 或 & 
'
参  数:search_str  ----分页传递字符标示
'
返回值:加了 ? 或 & 的网址
'
***********************************************
Private Function Geturl(http://www.blog.com.cn/search_str)
  
Dim strurl,str_url,i,j,search_str,result_url
  
'search_str="page="
  strurl=Request.ServerVariables("URL")'得到系统路径
  Strurl=split(strurl,"/")'把字符串以"/"分开,返回一数组
  i=UBound(strurl,1'返回数组的最大下标
  str_url=strurl(i)'得到当前页文件名
  str_params=Request.ServerVariables("QUERY_STRING")'返回?后字符串
  If str_params="" Then
            result_url
=str_url & "?"&search_str
  
Else
            
If InstrRev(str_params,search_str)=0 Then
                     result_url
=str_url & "?" & str_params &"&"&search_str
            
Else
                     j
=InstrRev(str_params,search_str)-2
                     
If j=-1 Then
                           result_url
=str_url & "?"&search_str
                     
Else
                              str_params
=Left(str_params,j)
                              result_url
=str_url & "?" & str_params &"&" &search_str
                     
End If
            
End If
  
End If
  GetURL
=result_url
End Function    
%
>


posted on 2006-03-30 21:22  flytide  阅读(305)  评论(0编辑  收藏  举报