ASP经典分页类

时间:2021-05-28

ASP经典分页类
出处

'=====================================================================
'XDOWNPAGEASP版本
'版本1.00
'Codebyzykj2000
'Email:zykj_2000@163.net
'BBS:http://bbs.513soft.net
'本程序可以免费使用、修改,希望我的程序能为您的工作带来方便
'但请保留以上请息
'
'程序特点
'本程序主要是对数据分页的部分进行了封装,而数据显示部份完全由用户自定义,
'支持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





声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章