设为首页   |  加入收藏夹 快速导航:  热门文章  |  最新文章  |  梦想博客  
当前位置:编程之家 -> 文章频道 ->asp 
站内搜索:  

一个用类写的分页程序,非常不错哟!

作者:大灰狼 来源:不详 整理日期:2006-08-17

<%
Const Btn_First="<font face=webdings>9</font>"  定义第一页按钮显示样式
Const Btn_Prev="<font face=webdings>7</font>"  定义前一页按钮显示样式
Const Btn_Next="<font face=webdings>8</font>"  定义下一页按钮显示样式
Const Btn_Last="<font face=webdings>:</font>"  定义最后一页按钮显示样式
Const Btn_more="..."
Const XD_Align="center"     定义分页信息对齐方式
Const XD_Width="100%"     定义分页信息框大小
Const BtnNum_Count=5     定义最多显示多少页分页  
Class Xdownpage
Private XD_PageCount,XD_Conn,XD_Rs,XD_SQL,XD_PageSize,Str_errors,int_curpage,str_URL,int_totalPage,int_totalRecord

设置每一页的分页大小
=================================================================
Public Property Let PageSize(int_PageSize)
 If IsNumeric(Int_Pagesize) Then
  XD_PageSize=CLng(int_PageSize)
 Else
  str_error=str_error & "PageSize的参数不正确"
  ShowError()
 End If
End Property

Public Property Get PageSize
 If XD_PageSize="" or (not(IsNumeric(XD_PageSize))) Then
  PageSize=10     
 Else
  PageSize=XD_PageSize
 End If
End Property

=================================================================
Public Property Get GetRs()
 Set XD_Rs=Server.createobject("adodb.recordset")
 XD_Rs.PageSize=PageSize
 XD_Rs.Open XD_SQL,XD_Conn,1,1
 If not(XD_Rs.eof and XD_RS.BOF) Then
  If int_curpage>XD_RS.PageCount Then
   int_curpage=XD_RS.PageCount
  End If
  XD_Rs.AbsolutePage=int_curpage
 End If
 Set GetRs=XD_RS
End Property

================================================================ 
Public Property Let GetConn(obj_Conn)
 Set XD_Conn=obj_Conn
End Property

================================================================
Public Property Let GetSQL(str_sql)
 XD_SQL=str_sql
End Property

================================================================== 
Private Sub Class_Initialize
 ========================
 设定一些参数的黙认值
 ========================
 XD_PageSize=10  设定分页的默认值为10
 ========================
 获取当前面的值
 ========================
 If request("page")="" Then
  int_curpage=1
 ElseIf not(IsNumeric(request("page"))) Then
  int_curpage=1
 ElseIf CInt(Trim(request("page")))<1 Then
  int_curpage=1
 Else
  Int_curpage=CInt(Trim(request("page")))
 End If
  
End Sub

====================================================================
Private Sub makepagebar()
 
 int_totalRecord=XD_RS.RecordCount
 If int_totalRecord<=0 Then
  str_error=str_error & "总记录数为零,请输入数据"
  Call ShowError()
 End If
 If int_totalRecord<pagesize Then
  int_TotalPage=1
 Else
  int_TotalPage=XD_RS.PageCount
 End If
 
 If Int_curpage>int_Totalpage Then
  int_curpage=int_TotalPage
 End If
End Sub
Public Function StrPages()
 Dim str_tmp
 Call makepagebar()
 
 str_tmp="<table border=0  width="&XD_Width&">"
 str_tmp=str_tmp&"<form action=? method=get>"
 str_tmp=str_tmp&"<tr><td align="&XD_Align&">"
 str_tmp=str_tmp&ShowFirstPrv
 str_tmp=str_tmp&showNumBtn
 str_tmp=str_tmp&ShowNextLast
 str_tmp=str_tmp&ShowGogoPage
 str_tmp=str_tmp&ShowPageInfo
 str_tmp=str_tmp&"</td></tr>"
 str_tmp=str_tmp&"</form>"
 str_tmp=str_tmp&"</table>"
 
 StrPages=str_tmp
 
End Function
Public Sub showpage()
 response.write StrPages()
End Sub

====================================================================
Private Function ShowFirstPrv()
 Dim Str_tmp,int_prvpage
 If int_curpage=1 Then
  str_tmp=Btn_First&"&nbsp;"&Btn_Prev
  str_tmp=Btn_First&"&nbsp;"
 Else
  int_prvpage=int_curpage-1
  str_tmp="<a href="&geturl&"1>"&Btn_First&"</a>&nbsp;<a href="&geturl & int_prvpage &">"& Btn_Prev&"</a>&nbsp;"
  str_tmp="<a href="&geturl&"1>"&Btn_First&"</a>&nbsp;"
 End If
 ShowFirstPrv=str_tmp
End Function

====================================================================
Private Function ShowNextLast()
 Dim str_tmp,int_Nextpage
 
 If Int_curpage>=int_totalpage Then
  str_tmp=Btn_Next & "&nbsp;" & Btn_Last
  str_tmp=Btn_Last
 Else
  Int_NextPage=int_curpage+1
  str_tmp="<a href="& geturl & int_NextPage &">"&Btn_Next&"</a>&nbsp;<a href="&geturl & int_totalpage &">"& Btn_Last&"</a>"
  str_tmp="<a href="&geturl & int_totalpage &">"& Btn_Last&"</a>"
 End If  
 ShowNextLast=str_tmp
End Function

====================================================================
Private Function showNumBtn()
 Dim i,str_tmp
 Dim start_p,end_p
 Dim Str_start,str_end

 If int_totalPage<btnnum_count Then
  For i=1 to int_totalpage
   if i=int_curpage then
    str_tmp=str_tmp & "<font color=#ff0000>[" &i& "]</font>&nbsp;"
   else
    str_tmp=str_tmp & "<a href="& geturl & i &">["&i&"]</a>&nbsp;"
   end if
  Next
 Else
  If int_curpage<=BtnNum_Count Then
   start_p=1
   end_p=btnnum_count
   str_start=""
   str_end="<a href=" & GetUrl & end_p+1 &">"&Btn_next&"</a>&nbsp;"
  ElseIf int_curpage>(int_totalpage\BtnNum_Count)*BtnNum_Count Then
   start_p=(int_totalpage\BtnNum_Count)*BtnNum_Count+1
   end_p=int_totalpage
   str_start="<a href=" & GetUrl & start_p-1 &">"&Btn_prev&"</a>&nbsp;"
   str_end=""
  Else
   if (int_curpage mod btnnum_count)=0 then
   start_p=int_curpage-btnnum_count+1
   End_p=int_curpage
   else
   start_p=(int_curpage\btnnum_count)*btnnum_count+1
   End_p=(int_curpage\btnnum_count)*btnnum_count+btnnum_count
   end if
   str_start="<a href=" & GetUrl & start_p-1 &">"&Btn_prev&"</a>&nbsp;"
   str_end="<a href=" & GetUrl & end_P+1 &">"&Btn_next&"</a>&nbsp;"
  End If
  For i=start_p to End_p
   if i=int_curpage then
    str_tmp=str_tmp & "<font color=#ff0000>[" &i& "]</font>&nbsp;"
   else
    str_tmp=str_tmp & "<a href="& geturl & i &">["&i&"]</a>&nbsp;"
   end if
  Next
  str_tmp=str_start & str_tmp & str_end
 End If
 
 showNumBtn=str_tmp
 
End Function
====================================================================

Private Function ShowGogoPage()
 
 for each item in Request.QueryString
  if item<>"page" then
   str_tmp=str_tmp&"<input name="&item&" type=hidden value="&server.HTMLEncode(Request.QueryString(item))&">"
  end if
 next
 str_tmp=str_tmp&"&nbsp;<input name=page type=text size=3 value="&Int_curpage&" style=font-size: 11px;height: 16px;border: 1px solid #999999;>"
 str_tmp=str_tmp&"&nbsp;<input type=submit value=Go style=font-size: 11px;height: 16px;border: 1px solid #999999;>"

 ShowGogoPage=str_tmp
 
End Function
====================================================================
Private Function ShowPageInfo()
 Dim str_tmp
 str_tmp="&nbsp;页次:"&int_curpage&"/"&int_totalpage&"页 共"&int_totalrecord&"条记录 "&XD_PageSize&"条/页"
 ShowPageInfo=str_tmp
End Function

==================================================================
Private Function GetURL()
 Dim strurl,str_url,i,j,search_str,result_url
 search_str="page="
 
 strurl=Request.ServerVariables("URL")
 Strurl=split(strurl,"/")
 i=UBound(strurl,1)
 response.write i
 response.end
 str_url=strurl(i)得到当前页文件名
 
 str_params=Request.ServerVariables("QUERY_STRING")
 If str_params="" Then
  result_url=str_url & "?page="
 Else
  If InstrRev(str_params,search_str)=0 Then
   result_url=str_url & "?" & str_params &"&page="
  Else
   j=InstrRev(str_params,search_str)-2
   If j=-1 Then
    result_url=str_url & "?page="
   Else
    str_params=Left(str_params,j)
    result_url=str_url & "?" & str_params &"&page="
   End If
  End If
 End If
 
 GetURL=result_url
 
End Function

====================================================================
Private Sub ShowError()
 If str_Error <> "" Then
  Response.Write("<font color=""#FF0000""><br><b>" & SW_Error & "</font>")
  Response.End
 End If
End Sub

End class
%>

调用方法:

sql="select * ......."
Set mypage=new xdownpage
mypage.getconn=conn 
mypage.getsql=sql
mypage.pagesize=12
set rs=mypage.getrs()
for i=1 to mypage.pagesize
    if not rs.eof then
    表格循环体
         rs.movenext
    else
         exit for
    end if
next

大家试一试,是不是很不错呀!