ASP经典分页类
2018-09-06 11:16
ASP经典分页类
出处
=====================================================================
XDOWNPAGEASP版本
版本1.00
Codebyzykj2000
BBS:
本程序可以免费使用、修改,希望我的程序能为您的工作带来方便
但请保留以上请息
程序特点
本程序主要是对数据分页的部分进行了封装,而数据显示部份完全由用户自定义,
支持URL多个参数
使用说明
程序参数说明
PapgeSize定义分页每一页的记录数
GetRS返回经过分页的Recordset此属性只读
GetConn得到数据库连接
GetSQL得到查询语句
程序方法说明
ShowPage显示分页导航条,唯一的公用方法
例:
包含文件
Setmypage=newxdownpage创建对象
mypage.getconn=conn得到数据库连接
mypage.getsql=select*fromproductinfoorderbyidasc
mypage.pagesize=5设置每一页的记录条数据为5条
setrs=mypage.getrs()返回Recordset
mypage.showpage()显示分页信息,这个方法可以,在setrs=mypage.getrs()以后
任意位置调用,可以调用多次
fori=1tomypage.pagesize接下来的操作就和操作一个普通Recordset对象一样操作
ifnotrs.eofthen这个标记是为了防止最后一页的溢出
response.writers(0)&
这里就可以自定义显示方式了
rs.movenext
else
exitfor
endif
next
=====================================================================
ConstBtn_First=9定义第一页按钮显示样式
ConstBtn_Prev=3定义前一页按钮显示样式
ConstBtn_Next=4定义下一页按钮显示样式
ConstBtn_Last=:定义最后一页按钮显示样式
ConstXD_Align=center定义分页信息对齐方式
ConstXD_Width=100%定义分页信息框大小
ConstXD_Height=20
ClassXdownpage
PrivateXD_PageCount,XD_Conn,XD_Rs,XD_SQL,XD_PageSize,Str_errors,int_curpage,str_URL,int_totalPage,int_totalRecord
=================================================================
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
int_totalRecord=XD_RS.RecordCount
Ifint_totalRecord<=0Then
str_error=str_error&总记录数为零,请输入数据
CallShowError()
EndIf
Ifint_totalRecordint_TotalPage=1
Else
Ifint_totalRecordmodPageSize=0Then
int_TotalPage=Int(int_TotalRecord/XD_PageSize*-1)*-1
Else
int_TotalPage=Int((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
ShowGoto
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=&Btn_First&&Btn_Prev&
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=&Btn_Next&&Btn_Last&
EndIf
ShowNextLast=str_tmp
EndFunction
====================================================================
ShowNumBtn数字导航
====================================================================
PrivateFunctionshowNumBtn()
Dimi,str_tmp
Fori=1toint_totalpage
str_tmp=str_tmp&[&i&]
Next
showNumBtn=str_tmp
EndFunction
====================================================================
ShowNumBtn修改后的数字导航
====================================================================
FunctionshowNumBtn()
Dimi,str_tmp,end_page,start_page
ifint_curpage>4then
ifint_curpage+2start_page=int_curpage-2
end_page=int_curpage+2
else
start_page=int_totalpage-4
end_page=int_totalpage
endif
else
start_page=1
ifint_totalpage>5then
end_page=5
else
end_page=int_totalpage
endif
endif
Fori=start_pagetoend_page
str_tmp=str_tmp&[&i&]
Next
showNumBtn=str_tmp
EndFunction
====================================================================
ShowGoto页面跳转
====================================================================
PrivateFunctionShowGoto()
DimM_item
========================================================
将返回的Url参数逐个的写入隐藏域中,以便与参数继续传递
========================================================
ForEachM_itemInRequest.QueryString
IfInStr(page,M_Item)=0Then从参数中除去page的值
Response.Write
EndIf
Next
========================================================
response.write转到第:
response.write页
EndFunction
====================================================================
ShowPageInfo分页信息
更据要求自行修改
====================================================================
PrivateFunctionShowPageInfo()
Dimstr_tmp
str_tmp=[页次:&int_curpage&/&int_totalpage&页][共&int_totalrecord&条][&XD_PageSize&条/页]
ShowPageInfo=str_tmp
EndFunction
====================================================================
修改后的获取当前Url参数的函数
CodeingbyRedsun
====================================================================
PrivateFunctionGetUrl()
DimScriptAddress,M_ItemUrl,M_item
ScriptAddress=CStr(Request.ServerVariables(SCRIPT_NAME))&?取得当前地址
If(Request.QueryString<>)Then
M_ItemUrl=
ForEachM_itemInRequest.QueryString
IfInStr(page,M_Item)=0Then
M_ItemUrl=M_ItemUrl&M_Item&=&Server.URLEncode(Request.QueryString(&M_Item&))&&
EndIf
Next
ScriptAddress=ScriptAddress&M_ItemUrl取得带参数地址
EndIf
GetUrl=ScriptAddress&page=
EndFunction
====================================================================
设置Terminate事件。
====================================================================
PrivateSubClass_Terminate
XD_RS.close
SetXD_RS=nothing
EndSub
====================================================================
ShowError错误提示
====================================================================
PrivateSubShowError()
Ifstr_Error<>Then
Response.Write(
&SW_Error&)
Response.End
EndIf
EndSub
Endclass