超级ASP大分页_我的类容我做主
2018-09-06 10:53
超级ASP大分页_我的类容我做主选择自AppleBBS的Blog
关键字超级ASP大分页_我的类容我做主
出处
<%
===================================================================
ShowMorePageASP版本
VersionHuangJM1.00
Codebymaomao
CreateDate2004-09-28
QQ:5144707
Writeformylover:HuangJM本程序可以免费使用、修改,但请保留以上信息
function
本程序主要是对数据分页的部分进行了封装,而数据显示部份完全由用户自定义,
支持URL多个参数:
Paramers:
PapgeSize定义分页每一页的记录数
GetCurPageNum返回当前页的记录集数目此属性只读
GetRS返回经过分页的Recordset此属性只读
GetConn得到数据库连接
GetSQL得到查询语句
InterfaceofClass
ShowPage显示分页导航条,唯一的公用方法
#############类调用样例#################
创建对象
SethjmPage=newShowMorePage
得到数据库连接
hjmPage.getconn=conn
sql语句
hjmPage.getsql=select*fromshop_bookswherenewsbook=1orderbybookiddesc
设置每一页的记录条数据为20条,默认显示10条
hjmPage.pagesize=20
显示分页信息,可在任意位置调用,可以调用多次
hjmPage.showpage()
setrs=hjmPage.getrs()返回Recordset
显示数据开始
这里就可以自定义显示方式了
fori=1tohjmPage.GetCurPageNum当前页的记录数目
response.writeleft(trim(rs(bookname)),13)&....
rs.movenext
next
显示数据结束
sethjmPage=nothing
#############类调用样例#################
===================================================================
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%定义分页信息框大小
ClassShowMorePage
PrivateObj_Conn,Obj_Rs,Str_Sql,int_PageSize,Str_Errors,Int_CurPage,Str_URL,Int_TotalPage,Int_TotalRecord
=================================================================
PageSize属性
设置每一页的分页大小
=================================================================
PublicPropertyLetPageSize(intvalue)
IfIsNumeric(intvalue)Then
int_PageSize=CLng(intvalue)
Else
Str_Errors=Str_Errors&PageSize的参数不正确
ShowError()
EndIf
EndProperty
PublicPropertyGetPageSize
Ifint_PageSize=or(not(IsNumeric(int_PageSize)))Then
PageSize=10
Else
PageSize=int_PageSize
EndIf
EndProperty
=================================================================
GetRS属性
返回分页后的记录集
=================================================================
PublicPropertyGetGetRs()
ifInt_TotalRecord=0thenCallGetPage()
Ifnot(Obj_Rs.eofandObj_Rs.BOF)Then
ifInt_CurPage<>1then
ifInt_CurPage-1<Int_TotalPagethen
Obj_Rs.move(Int_CurPage-1)*PageSize
dimbookmark
bookmark=Obj_Rs.bookmark
else
Int_CurPage=1
endif
endif
EndIf
SetGetRs=Obj_Rs
EndProperty
=================================================================
GetCurPageNum属性
返回当前页的记录集数目
=================================================================
PublicPropertyGetGetCurPageNum()
dimint_PageNum
int_PageNum=int_PageSize
ifInt_TotalRecord=0thenCallGetPage()
IfInt_CurPage>Int_TotalPageThen
Int_CurPage=Int_TotalPage
int_PageNum=Int_TotalRecord-(Int_TotalPage-1)*int_PageSize
ElseIfInt_CurPage=Int_TotalPageThen
int_PageNum=Int_TotalRecord-(Int_TotalPage-1)*int_PageSize
EndIf
GetCurPageNum=int_PageNum
EndProperty
================================================================
GetConn得到数据库连接
================================================================
PublicPropertyLetGetConn(sconn)
SetObj_Conn=sconn
EndProperty
================================================================
GetSQL得到查询语句
================================================================
PublicPropertyLetGetSQL(svalue)
Str_Sql=svalue
EndProperty
==================================================================
Class_Initialize类的初始化
初始化当前页的值
==================================================================
PrivateSubClass_Initialize
========================
设定一些参数的黙认值
========================
int_PageSize=10设定分页的默认值为10
Int_TotalRecord=0
========================
获取当前面的值
========================
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
====================================================================
openRS打开数据集
有首页、前一页、下一页、末页、还有数字导航
====================================================================
PrivateSubopenRS()
SetObj_Rs=Server.createobject(adodb.recordset)
Obj_Rs.OpenStr_Sql,Obj_Conn,1,1
EndSub
====================================================================
getPage创建分页导航条
有首页、前一页、下一页、末页、还有数字导航
====================================================================
PrivateSubGetPage()
IfTypeName(Obj_Rs)<>ObjectThenCallopenRS()
Int_TotalRecord=Obj_Rs.RecordCount
IfInt_TotalRecord<=0Then
Str_Errors=Str_Errors&总记录数为零,请输入数据
CallShowError()
EndIf
IfInt_TotalRecordmodPageSize=0Then
Int_TotalPage=Int_TotalRecord\int_PageSize
Else
Int_TotalPage=Int_TotalRecord\int_PageSize+1
EndIf
IfInt_CurPage>Int_TotalPageThen
Int_CurPage=Int_TotalPage
EndIf
EndSub
====================================================================
ShowPage创建分页导航条
有首页、前一页、下一页、末页、还有数字导航
====================================================================
PublicSubShowPage()
Dimstr_tmp
Str_URL=GetUrl()
ifInt_TotalRecord=0thenCallGetPage()
==================================================================
显示分页信息,各个模块根据自己要求更改显求位置
==================================================================
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=&Str_URL&1&>&Btn_First&</a><ahref=&Str_URL&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=&Str_URL&CStr(int_nextpage)&>&Btn_Next&</a><ahref=&Str_URL&CStr(Int_TotalPage)&>&Btn_Last&</a>
EndIf
ShowNextLast=str_tmp
Endfunction
====================================================================
ShowNumBtn数字导航
每次显示10页
====================================================================
PrivatefunctionshowNumBtn()
Dimi,str_tmp,m,n
m=Int_CurPage-4
n=Int_TotalPage
ifn>1then
fori=1to10
ifm<1thenm=1
ifm>nthen
exitfor
endif
str_tmp=str_tmp&[<ahref=&Str_URL&CStr(i)&>&i&</a>]
m=m+1
next
endif
showNumBtn=str_tmp
Endfunction
====================================================================
ShowPageInfo分页信息
更据要求自行修改
====================================================================
PrivatefunctionShowPageInfo()
Dimstr_tmp
str_tmp=页次:&Int_CurPage&/&Int_TotalPage&页共&Int_TotalRecord&条记录&int_PageSize&条/每页
ShowPageInfo=str_tmp
Endfunction
==================================================================
GetURL得到当前的URL
更据URL参数不同,获取不同的结果
==================================================================
PrivatefunctionGetURL()
DimstrUrl,tmp_URL,i,j,search_str,result_url
search_str=page=
strUrl=Request.Servervariables(URL)
strUrl=split(strUrl,/)
i=UBound(strUrl,1)
tmp_URL=strUrl(i)得到当前页文件名
str_params=Trim(Request.Servervariables(QUERY_STRING))
Ifstr_params=Then
result_url=tmp_URL&?page=
Else
IfInstrRev(str_params,search_str)=0Then
result_url=tmp_URL&?&str_params&&page=
Else
j=InstrRev(str_params,search_str)-2
Ifj=-1Then
result_url=tmp_URL&?page=
Else
str_lparams=Left(str_params,j)
str_rparams=right(str_params,len(str_params)-j-1)
ifInStr(str_rparams,&)<>0then
str_rparams=right(str_rparams,len(str_rparams)-InStr(str_rparams,&)+1)
else
str_rparams=
endif
result_url=tmp_URL&?&str_lparams&str_rparams&&page=
EndIf
EndIf
EndIf
GetURL=result_url
Endfunction
====================================================================
设置Terminate事件。
====================================================================
PrivateSubClass_Terminate
Obj_Rs.close
SetObj_Rs=nothing
Obj_Conn.close
setObj_Conn=nothing
EndSub
====================================================================
ShowError错误提示
====================================================================
PrivateSubShowError()
IfStr_Errors<>Then
Response.Write(&Str_Errors&)
Response.End
EndIf
EndSub
Endclass
%>
<!--#includefile=include/function.asp-->
<%
dimconn
calldbconnect()
#############类调用样例#################
创建对象
SethjmPage=newShowMorePage
得到数据库连接
hjmPage.getconn=conn
sql语句
hjmPage.getsql=selectTop6*fromshop_bookswherenewsbook=1orderbybookiddesc
设置每一页的记录条数据为5条
hjmPage.pagesize=2
setrs=hjmPage.getrs()返回Recordset
显示分页信息,这个方法可以,在setrs=hjmPage.getrs()以后,可在任意位置调用,可以调用多次
hjmPage.showpage()
显示数据
Response.Write(<br/>)
fori=1tohjmPage.GetCurPageNum当前页的记录数目
这里就可以自定义显示方式了
%>