<%
'==================================================
'XDOWNPAGEASP版本
'版本1.00
'Codebyzykj2000
'Email:
[email protected]
'BBS:
http://bbs.513soft.net
'本程序可以免费使用、修改,希望我的程序能为您的工作带来方便
'但请保留以上请息
'===================================
'显示仿BleaIdea的分页栏风格R.Koo修改
'===================================
'
'程序特点
'本程序主要是对数据分页的部分进行了封装,而数据显示部份完全由用户自定义,
'支持URL多个参数
'
'使用说明
'程序参数说明
'PapgeSize定义分页每一页的记录数
'GetRS返回经过分页的Recordset此属性只读
'GetConn得到数据库连接
'GetSQL得到查询语句
'程序属性说明
'ShowPage显示分页导航条,唯一的属性
'
'例:
'包含文件
'Setmypage=newxdownpage'创建对象
'mypage.getconn=conn'得到数据库连接
'mypage.getsql="select*fromproductinfoorderbyidasc"
'mypage.pagesize=5'设置每一页的记录条数据为5条
'setrs=mypage.getrs()'返回Recordset
'fori=1tomypage.pagesize'接下来的操作就和操作一个普通Recordset对象一样操作
'ifnotrs.eofthen'这个标记是为了防止最后一页的溢出
'Response.Write&rs(0)&""'这里就可以自定义显示方式了
'rs.movenext
'else
'exitfor
'endif
'next
'response.writemypage.showpage显示分页信息,在setrs=mypage.getrs()以后
'=====================================================
ClassXdownpage
PrivateXD_PageCount,XD_Conn,XD_Rs,XD_SQL,XD_PageSize,Str_errors,int_curpage,str_URL,int_totalPage,int_totalRecord,str_error,SW_Error
'=========================================
'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
'==============================
'显示仿BleaIdea的分页栏风格R.Koo修改
'=============================
PublicFunctionPage()
DimStr_tmp,str_fisrt,str_prev,str_next,str_last,str_info,str_select,i
int_totalRecord=XD_RS.RecordCount
Ifint_totalRecord<=0Then
str_error=str_error&"总记录数为零,请输入数据"
CallShowError()
EndIf
Ifint_totalRecord>0Then'int_TotalPage=1
Ifint_totalRecordmodPageSize=0Then
int_TotalPage=CLng(int_TotalRecord\XD_PageSize)
Else
int_TotalPage=CLng(int_TotalRecord\XD_PageSize)+1
EndIf
EndIf
IfInt_curpage>int_TotalpageThen
int_curpage=int_TotalPage
EndIf
Ifint_curpage=1Then
str_fisrt="首页"
str_prev="前页"
Else
str_fisrt="<ahref="""&geturl&"1"&""">首页</a>"
str_prev="<ahref="""&geturl&int_curpage-1&""">前页</a>"
EndIf
Ifint_curpage>=int_totalpageThen
str_next="后页"
str_last="尾页"
Else
str_next="<ahref="""&geturl&Int_curpage+1&""">后页</a>"
str_last="<ahref="""&geturl&int_totalpage&""">尾页</a>"
EndIf
str_select="<selectstyle=""font:8pt;""onchange=""if(this.options[this.selectedIndex].value!=''){location=this.options[this.selectedIndex].value;}"">"
Fori=1toint_totalpage
str_select=str_select&"<optionvalue="""&geturl&i&""""
ifint_curpage=ithenstr_select=str_select&"selected"'str_tmp=str_tmp&"["&i&"]"elsestr_tmp=str_tmp&"<ahref="""&geturl&i&""">["&i&"]</a>"
str_select=str_select&">"&i&"</option>"
Next
str_select=str_select&"</select>"
str_info="页次:<B>"&Int_curpage&"</B>/<B>"&int_totalpage&"</B> 页 <B>"&XD_PageSize&"</B>条/页 转到"&str_select&"页 共<B>"&int_totalrecord&"</B>个记录"
Page=str_fisrt&" "&str_prev&" "&str_next&" "&str_last&"<BR>"&str_info
EndFunction
'================================================
'GetURL得到当前的URL
'更据URL参数不同,获取不同的结果
'================================================
PrivateFunctionGetURL()
Dimstrurl,str_url,i,j,search_str,result_url,str_params
search_str="page="
strurl=Request.ServerVariables("URL")
Strurl=split(strurl,"/")
i=UBound(strurl,1)
str_url=strurl(i)'得到当前页文件名
str_params=Request.ServerVariables("QUERY_STRING")
Ifstr_params=""Then
result_url=str_url&"?page="
Else
IfInstrRev(str_params,search_str)=0Then
result_url=str_url&"?"&str_params&"&page="
Else
j=InstrRev(str_params,search_str)-2
Ifj=-1Then
result_url=str_url&"?page="
Else
str_params=Left(str_params,j)
result_url=str_url&"?"&str_params&"&page="
EndIf
EndIf
EndIf
GetURL=result_url
EndFunction
'===========================================
'设置Terminate事件。
'===========================================
PrivateSubClass_Terminate
XD_RS.close
SetXD_RS=nothing
EndSub
'===========================================
'ShowError错误提示
'===========================================
PrivateSubShowError()
Ifstr_Error<>""Then
Response.Write("<divalign=""center"">出错了<BR><BR><ahref="""">返回</a></div>")
Response.End
EndIf
EndSub
Endclass
%>