分享

ASP分頁

 昵称36553791 2016-09-20
超级ASP大分页_我的类容我做主     选择自 AppleBBS 的 Blog   
关键字   超级ASP大分页_我的类容我做主  
出处  
 <%  
'===================================================================  
'ShowMorePage ASP版本  
'Version HuangJM1.00  
'Code by maomao  
'Create Date 2004-09-28  
'QQ:5144707  
'http://blog.csdn.net/maomaoysq  
'Write for my lover:HuangJM '本程序可以免费使用、修改,但请保留以上信息  
'  
'function  
'本程序主要是对数据分页的部分进行了封装,而数据显示部份完全由用户自定义,  
'支持URL多个参数:http://www.***.com/***.asp?aa=1&page=9&bb=2  
'  
'  
'Paramers:  
'PapgeSize 定义分页每一页的记录数  
'GetCurPageNum 返回当前页的记录集数目此属性只读  
'GetRS 返回经过分页的Recordset此属性只读  
'GetConn 得到数据库连接  
'GetSQL 得到查询语句  
'Interface of Class  
'ShowPage 显示分页导航条,唯一的公用方法  
'  
'#############类调用样例#################  
'创建对象  
'Set hjmPage=new ShowMorePage  
'得到数据库连接  
'hjmPage.getconn=conn  
'sql语句  
'hjmPage.getsql="select * from shop_books where newsbook=1 order by bookid desc"  
'设置每一页的记录条数据为20条,默认显示10条  
'hjmPage.pagesize=20  
'显示分页信息,可在任意位置调用,可以调用多次  
'hjmPage.showpage()  
'set rs=hjmPage.getrs() '返回Recordset  
'显示数据开始  
'这里就可以自定义显示方式了  
'for i=1 to hjmPage.GetCurPageNum '当前页的记录数目  
'response.write left(trim(rs("bookname")),13)&"...."  
'rs.movenext  
'next  
'显示数据结束  
'set hjmPage=nothing  
'#############类调用样例#################  
'===================================================================  
Const Btn_First="<font face=""webdings"">9</font>" '定义第一页按钮显示样式  
Const Btn_Prev="<font face=""webdings"">3</font>" '定义前一页按钮显示样式  
Const Btn_Next="<font face=""webdings"">4</font>" '定义下一页按钮显示样式  
Const Btn_Last="<font face=""webdings"">:</font>" '定义最后一页按钮显示样式  
Const XD_Align="Center" '定义分页信息对齐方式  
Const XD_Width="100%" '定义分页信息框大小  
Class ShowMorePage  
Private Obj_Conn,Obj_Rs,Str_Sql,int_PageSize,Str_Errors,Int_CurPage,Str_URL,Int_TotalPage,Int_TotalRecord  

'================================================================= 
'PageSize 属性  
'设置每一页的分页大小  
'================================================================= 
Public Property Let PageSize(intvalue)  
If IsNumeric(intvalue) Then  
int_PageSize=CLng(intvalue)  
Else  
Str_Errors=Str_Errors & "PageSize的参数不正确"  
ShowError()  
End If  
End Property  
Public Property Get PageSize  
If int_PageSize="" or (not(IsNumeric(int_PageSize))) Then  
PageSize=10   
Else  
PageSize=int_PageSize  
End If  
End Property  
'================================================================= 
'GetRS 属性  
'返回分页后的记录集  
'================================================================= 
Public Property Get GetRs()  
if Int_TotalRecord= 0 then Call GetPage()  
If not(Obj_Rs.eof and Obj_Rs.BOF) Then  
if Int_CurPage<>1 then  
if Int_CurPage-1<Int_TotalPage then  
Obj_Rs.move (Int_CurPage-1)*PageSize  
dim bookmark  
bookmark=Obj_Rs.bookmark  
else  
Int_CurPage=1  
end if  
end if  
End If  
Set GetRs=Obj_Rs  
End Property  
'================================================================= 
'GetCurPageNum 属性  
'返回当前页的记录集数目  
'================================================================= 
Public Property Get GetCurPageNum()  
dim int_PageNum  
int_PageNum = int_PageSize  
if Int_TotalRecord= 0 then Call GetPage()  
If Int_CurPage>Int_TotalPage Then  
Int_CurPage=Int_TotalPage  
int_PageNum = Int_TotalRecord-(Int_TotalPage-1)*int_PageSize   
ElseIf Int_CurPage=Int_TotalPage Then  
int_PageNum = Int_TotalRecord-(Int_TotalPage-1)*int_PageSize   
End If  
GetCurPageNum = int_PageNum  
End Property  
'================================================================  
'GetConn 得到数据库连接  
'  
'================================================================   
Public Property Let GetConn(sconn)  
Set Obj_Conn=sconn  
End Property  
'================================================================  
'GetSQL 得到查询语句  
'  
'================================================================  
Public Property Let GetSQL(svalue)  
Str_Sql=svalue  
End Property  

'==================================================================  
'Class_Initialize 类的初始化  
'初始化当前页的值  
'  
'==================================================================   
Private Sub Class_Initialize  
'========================  
'设定一些参数的黙认值  
'========================  
int_PageSize=10 '设定分页的默认值为10  
Int_TotalRecord= 0  
'========================  
'获取当前面的值  
'========================  
If request("page")="" Then  
Int_CurPage=1  
ElseIf not(IsNumeric(request("page"))) Then  
Int_CurPage=1  
ElseIf CInt(Trim(request("page")))<1 Then  
Int_CurPage=1  
Else  
Int_CurPage=CInt(Trim(request("page")))  
End If  
End Sub  
'====================================================================  
'openRS 打开数据集  
'有首页、前一页、下一页、末页、还有数字导航  
'  
'====================================================================  
Private Sub openRS()  
Set Obj_Rs=Server.createobject("adodb.recordset")  
Obj_Rs.Open Str_Sql,Obj_Conn,1,1  
End Sub  
'====================================================================  
'getPage 创建分页导航条  
'有首页、前一页、下一页、末页、还有数字导航  
'  
'====================================================================  
Private Sub GetPage()  
If TypeName(Obj_Rs)<>"Object" Then Call openRS()  
Int_TotalRecord=Obj_Rs.RecordCount  
If Int_TotalRecord<=0 Then  
Str_Errors=Str_Errors & "总记录数为零,请输入数据"  
Call ShowError()  
End If  
If Int_TotalRecord mod PageSize =0 Then  
Int_TotalPage = Int_TotalRecord \ int_PageSize  
Else  
Int_TotalPage = Int_TotalRecord \ int_PageSize+1  
End If   
If Int_CurPage>Int_TotalPage Then  
Int_CurPage=Int_TotalPage  
End If  
End Sub  
'====================================================================  
'ShowPage 创建分页导航条  
'有首页、前一页、下一页、末页、还有数字导航  
'  
'====================================================================  
Public Sub ShowPage()  
Dim str_tmp  
Str_URL = GetUrl()  
if Int_TotalRecord= 0 then Call GetPage()  
'==================================================================  
'显示分页信息,各个模块根据自己要求更改显求位置  
'==================================================================  
response.write ""  
str_tmp=ShowFirstPrv  
response.write str_tmp  
str_tmp=showNumBtn  
response.write str_tmp  
str_tmp=ShowNextLast  
response.write str_tmp  
str_tmp=ShowPageInfo  
response.write str_tmp   
response.write ""  
End Sub  
'====================================================================  
'ShowFirstPrv 显示首页、前一页  
'  
'  
'====================================================================  
Private function ShowFirstPrv()  
Dim Str_tmp,int_prvpage  
If Int_CurPage=1 Then  
str_tmp=Btn_First&" "&Btn_Prev  
Else  
int_prvpage=Int_CurPage-1  
str_tmp="<a href="""&Str_URL & "1" & """>" & Btn_First&"</a> <a href=""" & Str_URL & CStr(int_prvpage) & """>" & Btn_Prev&"</a>"  
End If  
ShowFirstPrv=str_tmp  
End function  
'====================================================================  
'ShowNextLast 下一页、末页  
'  
'  
'====================================================================  
Private function ShowNextLast()  
Dim str_tmp,int_Nextpage  
If Int_CurPage>=Int_TotalPage Then  
str_tmp=Btn_Next & " " & Btn_Last  
Else  
Int_NextPage=Int_CurPage+1  
str_tmp="<a href=""" & Str_URL & CStr(int_nextpage) & """>" & Btn_Next&"</a> <a href="""& Str_URL & CStr(Int_TotalPage) & """>" & Btn_Last&"</a>"  
End If  
ShowNextLast=str_tmp  
End function  

'====================================================================  
'ShowNumBtn 数字导航  
'每次显示10页  
'  
'====================================================================  
Private function showNumBtn()  
Dim i,str_tmp,m,n  
m = Int_CurPage - 4  
n = Int_TotalPage  
if n>1 then  
for i = 1 to 10  
if m < 1 then m = 1   
if m > n then  
exit for  
end if  
str_tmp=str_tmp & "[<a href=""" & Str_URL & CStr(i) & """>"&i&"</a>] "  
m = m + 1  
next  
end if  
showNumBtn=str_tmp  
End function  

'====================================================================  
'ShowPageInfo 分页信息  
'更据要求自行修改  
'  
'====================================================================  
Private function ShowPageInfo()  
Dim str_tmp  
str_tmp="页次:"&Int_CurPage&"/"&Int_TotalPage&"页 共"&Int_TotalRecord&"条记录 "&int_PageSize&"条/每页"  
ShowPageInfo=str_tmp  
End function  
'==================================================================  
'GetURL 得到当前的URL  
'更据URL参数不同,获取不同的结果  
'  
'==================================================================  
Private function GetURL()  
Dim strUrl,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"))  
If str_params="" Then  
result_url=tmp_URL & "?page="  
Else  
If InstrRev(str_params,search_str)=0 Then  
result_url=tmp_URL & "?" & str_params &"&page="  
Else  
j=InstrRev(str_params,search_str)-2  
If j=-1 Then  
result_url=tmp_URL & "?page="  
Else  
str_lparams=Left(str_params,j)  
str_rparams=right(str_params,len(str_params)-j-1)  
if InStr(str_rparams,"&")<>0 then  
str_rparams=right(str_rparams,len(str_rparams)-InStr(str_rparams,"&")+1)  
else  
str_rparams = ""  
end if  
result_url=tmp_URL & "?" & str_lparams&str_rparams&"&page="  
End If  
End If  
End If  
GetURL=result_url  
End function  
'====================================================================  
' 设置 Terminate 事件。  
'  
'====================================================================  
Private Sub Class_Terminate   
Obj_Rs.close  
Set Obj_Rs=nothing  
Obj_Conn.close  
set Obj_Conn = nothing  
End Sub  
'====================================================================  
'ShowError 错误提示  
'  
'  
'====================================================================  
Private Sub ShowError()  
If Str_Errors <> "" Then  
Response.Write("" & Str_Errors & "")  
Response.End  
End If  
End Sub  
End class   
%>  

<!--#include file="include/function.asp"-->  
<%  
dim conn  
call dbconnect()  
'#############类调用样例#################  
'创建对象  
Set hjmPage=new ShowMorePage  
'得到数据库连接  
hjmPage.getconn=conn  
'sql语句  
hjmPage.getsql="select Top 6 * from shop_books where newsbook=1 order by bookid desc"  
'设置每一页的记录条数据为5条  
hjmPage.pagesize=2  
set rs=hjmPage.getrs() '返回Recordset  
'显示分页信息,这个方法可以,在set rs=hjmPage.getrs()以后,可在任意位置调用,可以调用多次  
hjmPage.showpage()  
'显示数据  
Response.Write("<br/>")  
for i=1 to hjmPage.GetCurPageNum '当前页的记录数目  
'这里就可以自定义显示方式了  
%>  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多