<%
'===================================================================
'XDOWNPAGEASP版本
'版本1.00
'Codebyzykj2000
'Email:zykj_2000@163.net
'BBS:http://bbs.513soft.net
'本程序可以免费使用、修改,希望我的程序能为您的工作带来方便
'但请保留以上请息
'
'程序特点
'本程序主要是对数据分页的部分进行了封装,而数据显示部份完全由用户自定义,
'支持URL多个参数
'
'使用说明
'程序参数说明
'PapgeSize定义分页每一页的记录数
'GetRS返回经过分页的Recordset此属性只读
'GetConn得到数据库连接
'GetSQL得到查询语句
'程序方法说明
'ShowPage显示分页导航条,唯一的公用方法
'
'===================================================================
ConstBtn_First="<fontface=""webdings"">9</font>"'定义第一页按钮显示样式
ConstBtn_Prev="<fontface=""webdings"">3</font>"'定义前一页按钮显示样式
ConstBtn_Next="<fontface=""webdings"">4</font>"'定义下一页按钮显示样式
ConstBtn_Last="<fontface=""webdings"">:</font>"'定义最后一页按钮显示样式
ConstXD_Align="Center"'定义分页信息对齐方式
ConstXD_Width="100%"'定义分页信息框大小
ClassXdownpage
PrivateXD_PageCount,XD_Conn,XD_Rs,XD_SQL,XD_PageSize,Str_errors,int_curpage,str_URL,int_totalPage,int_totalRecord,XD_sURL
'=================================================================
'PageSize属性
'设置每一页的分页大小
'=================================================================
PublicPropertyLetPageSize(int_PageSize)
IfIsNumeric(Int_Pagesize)Then
XD_PageSize=CLng(int_PageSize)
Else
str_error=str_error&"PageSize的参数不正确"
ShowError()
EndIf
EndProperty
PublicPropertyGetPageSize
IfXD_PageSize=""or(not(IsNumeric(XD_PageSize)))Then
PageSize=10
Else
PageSize=XD_PageSize
EndIf
EndProperty
'=================================================================
'GetRS属性
'返回分页后的记录集
'=================================================================
PublicPropertyGetGetRs()
SetXD_Rs=Server.createobject("adodb.recordset")
XD_Rs.PageSize=PageSize
XD_Rs.OpenXD_SQL,XD_Conn,1,1
Ifnot(XD_Rs.eofandXD_RS.BOF)Then
Ifint_curpage>XD_RS.PageCountThen
int_curpage=XD_RS.PageCount
EndIf
XD_Rs.AbsolutePage=int_curpage
EndIf
SetGetRs=XD_RS
EndProperty
'================================================================
'GetConn得到数据库连接
'
'================================================================
PublicPropertyLetGetConn(obj_Conn)
SetXD_Conn=obj_Conn
EndProperty
'================================================================
'GetSQL得到查询语句
'
'================================================================
PublicPropertyLetGetSQL(str_sql)
XD_SQL=str_sql
EndProperty
'==================================================================
'Class_Initialize类的初始化
'初始化当前页的值
'
'==================================================================
PrivateSubClass_Initialize
'========================
'设定一些参数的黙认值
'========================
XD_PageSize=10'设定分页的默认值为10
'========================
'获取当前面的值
'========================
Ifrequest("page")=""Then
int_curpage=1
ElseIfnot(IsNumeric(request("page")))Then
int_curpage=1
ElseIfCInt(Trim(request("page")))<1Then
int_curpage=1
Else
Int_curpage=CInt(Trim(request("page")))
EndIf
EndSub
'====================================================================
'ShowPage创建分页导航条
'有首页、前一页、下一页、末页、还有数字导航
'
'====================================================================
PublicSubShowPage()
Dimstr_tmp
XD_sURL=GetUrl()
int_totalRecord=XD_RS.RecordCount
Ifint_totalRecord<=0Then
str_error=str_error&"总记录数为零,请输入数据"
CallShowError()
EndIf
Ifint_totalRecord=""then
int_TotalPage=1
Else
Ifint_totalRecordmodPageSize=0Then
int_TotalPage=CLng(int_TotalRecord/XD_PageSize*-1)*-1
Else
int_TotalPage=CLng(int_TotalRecord/XD_PageSize*-1)*-1+1
EndIf
EndIf
IfInt_curpage>int_TotalpageThen
int_curpage=int_TotalPage
EndIf
'==================================================================
'显示分页信息,各个模块根据自己要求更改显求位置
'==================================================================
response.write""
str_tmp=ShowFirstPrv
response.writestr_tmp
str_tmp=showNumBtn
response.writestr_tmp
str_tmp=ShowNextLast
response.writestr_tmp
str_tmp=ShowPageInfo
response.writestr_tmp
response.write""
EndSub
'====================================================================
'ShowFirstPrv显示首页、前一页
'
'
'====================================================================
PrivateFunctionShowFirstPrv()
DimStr_tmp,int_prvpage
Ifint_curpage=1Then
str_tmp=Btn_First&""&Btn_Prev
Else
int_prvpage=int_curpage-1
str_tmp="<ahref="""&XD_sURL&"1"&""">"&Btn_First&"</a><ahref="""&XD_sURL&CStr(int_prvpage)&""">"&Btn_Prev&"</a>"
EndIf
ShowFirstPrv=str_tmp
EndFunction
'====================================================================
'ShowNextLast下一页、末页
'
'
'====================================================================
PrivateFunctionShowNextLast()
Dimstr_tmp,int_Nextpage
IfInt_curpage>=int_totalpageThen
str_tmp=Btn_Next&""&Btn_Last
Else
Int_NextPage=int_curpage+1
str_tmp="<ahref="""&XD_sURL&CStr(int_nextpage)&""">"&Btn_Next&"</a><ahref="""&XD_sURL&CStr(int_totalpage)&""">"&Btn_Last&"</a>"
EndIf
ShowNextLast=str_tmp
EndFunction
'====================================================================
'ShowNumBtn数字导航
'
'
'====================================================================
PrivateFunctionshowNumBtn()
Dimi,str_tmp
Fori=1toint_totalpage
str_tmp=str_tmp&"[<ahref="""&XD_sURL&CStr(i)&""">"&i&"</a>]"
Next
showNumBtn=str_tmp
EndFunction
'====================================================================
'ShowPageInfo分页信息
'更据要求自行修改
'
'====================================================================
PrivateFunctionShowPageInfo()
Dimstr_tmp
str_tmp="页次:"&int_curpage&"/"&int_totalpage&"页共"&int_totalrecord&"条记录"&XD_PageSize&"条/每页"
ShowPageInfo=str_tmp
EndFunction
'==================================================================
'GetURL得到当前的URL
'更据URL参数不同,获取不同的结果
'
'==================================================================
PrivateFunctionGetURL()
Dimstrurl,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=Trim(Request.ServerVariables("QUERY_STRING"))
Ifstr_params=""Then
result_url=str_url&"?page="
Else
IfInstrRev(str_params,search_str)=0Then
result_url=str_url&"?"&str_params&"&page="
Else
j=InstrRev(str_params,search_str)-2
Ifj=-1Then
result_url=str_url&"?page="
Else
str_params=Left(str_params,j)
result_url=str_url&"?"&str_params&"&page="
EndIf
EndIf
EndIf
GetURL=result_url
EndFunction
'====================================================================
'设置Terminate事件。
'
'====================================================================
PrivateSubClass_Terminate
XD_RS.close
SetXD_RS=nothing
EndSub
'====================================================================
'ShowError错误提示
'
'
'====================================================================
PrivateSubShowError()
Ifstr_Error<>""Then
Response.Write(""&str_Error&"")
Response.End
EndIf
EndSub
Endclass
'setconn=server.CreateObject("adodb.connection")
'conn.open"driver={microsoftaccessdriver(*.mdb)};dbq="&server.Mappath("/data/5iduohai.mdb")
'
''#############类调用样例#################
''创建对象
'Setmypage=newxdownpage
''得到数据库连接
'mypage.getconn=conn
''sql语句
'mypage.getsql="select*from[DH_Company]orderbyidasc"
''设置每一页的记录条数据为5条
'mypage.pagesize=5
''返回Recordset
'setrs=mypage.getrs()
'显示分页信息,这个方法可以,在setrs=mypage.getrs()以后,可在任意位置调用,可以调用多次
'
''显示数据
'Response.Write("<br/>")
'fori=1tomypage.pagesize
''这里就可以自定义显示方式了
'ifnotrs.eofthen
'response.writers(0)&"<br/>"
'rs.movenext
'else
'exitfor
'endif
'next
'mypage.showpage()
%>