<%
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&" "&Btn_Prev
str_tmp=Btn_First&" "
Else
int_prvpage=int_curpage-1
str_tmp="<a href="&geturl&"1>"&Btn_First&"</a> <a href="&geturl & int_prvpage &">"& Btn_Prev&"</a> "
str_tmp="<a href="&geturl&"1>"&Btn_First&"</a> "
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 & " " & Btn_Last
str_tmp=Btn_Last
Else
Int_NextPage=int_curpage+1
str_tmp="<a href="& geturl & int_NextPage &">"&Btn_Next&"</a> <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> "
else
str_tmp=str_tmp & "<a href="& geturl & i &">["&i&"]</a> "
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> "
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> "
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> "
str_end="<a href=" & GetUrl & end_P+1 &">"&Btn_next&"</a> "
End If
For i=start_p to End_p
if i=int_curpage then
str_tmp=str_tmp & "<font color=#ff0000>[" &i& "]</font> "
else
str_tmp=str_tmp & "<a href="& geturl & i &">["&i&"]</a> "
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&" <input name=page type=text size=3 value="&Int_curpage&" style=font-size: 11px;height: 16px;border: 1px solid #999999;>"
str_tmp=str_tmp&" <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=" 页次:"&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
大家试一试,是不是很不错呀!