`
happmaoo
  • 浏览: 4333074 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

超级ASP大分页_我的类容我做主

阅读更多
<%
'===================================================================
'ShowMorePageASP版本
'VersionHuangJM1.00
'Codebymaomao
'CreateDate2004-09-28
'QQ:5144707
'http://blog.csdn.net/maomaoysq
'Writeformylover:HuangJM'本程序可以免费使用、修改,但请保留以上信息
'
'function
'本程序主要是对数据分页的部分进行了封装,而数据显示部份完全由用户自定义,
'支持URL多个参数:http://www.***.com/***.asp?aa=1&page=9&bb=2
'
'
'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)<>"Object"ThenCallopenRS()
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'当前页的记录数目
'这里就可以自定义显示方式了
%>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics