叶子asp分页类

时间:2021-05-25

名称:叶子asp分页类
Name:ShowoPage(vbsclass)
RCSfile:ReadMe.txt
Revision:0.12.20051114.f
Author:Yehe(叶子)
Released:2005-11-1409:40:13
Descript:ASP分页类,支持access/mssql/mysql/sqlite
Contact:QQ:311673MSN:myehe@msn.comGT:mmyehe@gmail.com
WebSite:http://
*=================================================================
*/
functionCls_jsPage(iRecCount,iPageSize,iPageNum,sName){
this.iRC=this.FormatNum(iRecCount,1,0,0,0);//总记录条数
this.iPS=this.FormatNum(iPageSize,1,0,1,0);//每页记录数目
this.iPN=this.FormatNum(iPageNum,0,0,0,0);//显示的前后页数,0为显示所有,负数为这么多页面一个跳转
this.sN=sName;//实例对象名
this.sTPage="{$Page}";//页数
this.sTPageCount="{$PageCount}";//总页数
this.sTRecCount="{$RecCount}";//总记录数
this.sTPageSize="{$PageSize}";//每页记录数
this.sTPageFrist="{$PageFrist}";//首页
this.sTPagePrev="{$PagePrev}";//上页
this.sTPageNext="{$PageNext}";//下页
this.sTPageLast="{$PageLast}";//尾页
this.sTPageText="{$PageText}";//数字跳转
this.sTPageTextF="{$PageTextF}";//数字跳转框架
this.sTPageInput="{$PageInput}";//输入框跳转
this.sTPageSelect="{$PageSelect}";//下拉菜单跳转
this.sTPageNum="{$PageNum}";//数字页数
this.iPC=this.getPageCount();//得到页数
}
//输入页数开始值,结尾值
Cls_jsPage.prototype.setPageSE=function(sPageStart,sPageEnd){
varsPS=sPageStart,sPE=sPageEnd;
this.sPS=(sPS.length>0)?sPS:"Page=";
this.sPE=(sPE.length>0)?sPE:"";
}
//输入网址
Cls_jsPage.prototype.setUrl=function(sUrl){
vars=sUrl;
this.Url=(s.length>0)?s:""+document.location;
}
//输入输入框&下拉框name值
Cls_jsPage.prototype.setPageInput=function(sPageInput){
varsPI=sPageInput;
this.sPI=(sPI.length>0)?sPI:"Page";
}
//输入语言首页(Disable,Enale)
Cls_jsPage.prototype.setPageFrist=function(sDis,sEn){
this.PF_D=sDis;
this.PF_E=sEn;
}
//输入语言上页
Cls_jsPage.prototype.setPagePrev=function(sDis,sEn){
this.PP_D=sDis;
this.PP_E=sEn;
}
//输入语言下页
Cls_jsPage.prototype.setPageNext=function(sDis,sEn){
this.PN_D=sDis;
this.PN_E=sEn;
}
//输入语言尾页
Cls_jsPage.prototype.setPageLast=function(sDis,sEn){
this.PL_D=sDis;
this.PL_E=sEn;
}
//输入语言数字跳转
Cls_jsPage.prototype.setPageText=function(sDis,sEn){
this.PT_D=sDis;//"[{$PageNum}]"
this.PT_E=sEn;//"第{$PageNum}页"
}
//输入语言数字跳转外围模板
Cls_jsPage.prototype.setPageTextF=function(sDis,sEn){
this.PTF_D=sDis;//"{$PageTextF}"
this.PTF_E=sEn;//"{$PageTextF}"
}
//输入语言下拉菜单跳转
Cls_jsPage.prototype.setPageSelect=function(sDis,sEn){
this.PS_D=sDis;//"[{$PageNum}]"
this.PS_E=sEn;//"第{$PageNum}页"
}
//输入css
Cls_jsPage.prototype.setPageCss=function(sCssPageText,sCssPageInput,sCssPageSelect){
this.CPT=sCssPageText;//数字跳转css
this.CPI=sCssPageInput;//输入框跳转css
this.CPS=sCssPageSelect;//下拉菜单跳转css
}
//输入Html模板
Cls_jsPage.prototype.setHtml=function(sHtml){
this.Html=sHtml;//Html模板
}
//计算页数
Cls_jsPage.prototype.getPageCount=function(){
variRC=this.iRC,iPS=this.iPS;
vari=(iRC%iPS==0)?(iRC/iPS):(this.FormatNum((iRC/iPS),1,0,0,0)+1);
return(i);
}
//取得模板页数和当前页数
Cls_jsPage.prototype.getUrl=function(iType){
vars=this.Url,sPS=this.sPS,sPE=this.sPE,sTP=this.sTPage,iPC=this.iPC;
variT=iType,i;
if(s.indexOf(sPS)==-1){
s+=((s.indexOf("?")==-1)?"?":"&")+sPS+sTP;
i=1;
}
else{
sReg="(\\S.*)"+this.FormatReg(sPS)+"(\\d*)"+this.FormatReg(sPE)+"(\\S.*|\\S*)";
varsPIndex=this.Reg(s,sReg,"$3");
s=s.replace(sPS+sPIndex+sPE,sPS+sTP+sPE);
i=this.FormatNum(sPIndex,1,1,0,iPC);
}
s=this.Reg(s,"(&+)","&");
s=this.Reg(s,"(\\?&)","?");
return(iT==0?s:i);
}
//页面跳转
Cls_jsPage.prototype.PageJump=function(){
varsPL,sPV,sP;
varsU=this.getUrl(0),iPI=this.getUrl(1);
varsPI=this.sPI,sTP=this.sTPage,iPC=this.iPC;
sPL=document.getElementsByName(sPI).length;
for(vari=0;i<sPL;i++){
sPV=document.getElementsByName(sPI)[i].value;
sP=this.FormatNum(sPV,1,1,0,iPC);
if(sP>0){
location.href=sU.replace(sTP,sP);
break;
}
}
}
//输出
Cls_jsPage.prototype.Write=function(){
varsU=this.getUrl(0),iPI=this.getUrl(1);
varsN=this.sN,sPI=this.sPI;
variPC=this.iPC,iPN=this.iPN;;
variRC=this.iRC,iPS=this.iPS;
varPF_D=this.PF_D,PF_E=this.PF_E;
varPP_D=this.PP_D,PP_E=this.PP_E;
varPN_D=this.PN_D,PN_E=this.PN_E;
varPL_D=this.PL_D,PL_E=this.PL_E;
varPT_D=this.PT_D,PT_E=this.PT_E;
varPTF_D=this.PTF_D,PTF_E=this.PTF_E;
varPS_D=this.PS_D,PS_E=this.PS_E;
varCPT=this.CPT,CPI=this.CPI;
varCPS=this.CPS,iPN=this.iPN;
vars=this.Html;
sTPage=this.sTPage;
sTPageCount=this.sTPageCount;
sTRecCount=this.sTRecCount;
sTPageSize=this.sTPageSize;
sTPFrist=this.sTPageFrist;
sTPPrev=this.sTPagePrev;
sTPNext=this.sTPageNext;
sTPLast=this.sTPageLast;
sTPText=this.sTPageText;
sTPTextF=this.sTPageTextF;
sTPInput=this.sTPageInput;
sTPSelect=this.sTPageSelect;
sTPageNum=this.sTPageNum;
varPrevP=this.FormatNum((iPI-1),1,1,1,iPC),NextP=this.FormatNum((iPI+1),1,1,1,iPC);
varFU,PU,NU,LU;
vars1="<spanclass=\""+CPT+"\"><Ahref=\"",s2="\">",s3="</A></span>";
vars4="<spanclass=\""+CPT+"\">",s5="</span>";
if(iPI<=1&&iPC<=1){
FU=s4+PF_D+s5;
PU=s4+PP_D+s5;
NU=s4+PN_D+s5;
LU=s4+PL_D+s5;
}
elseif(iPI==1&&iPC>1){
FU=s4+PF_D+s5;
PU=s4+PP_D+s5;
NU=s1+sU.replace(sTPage,NextP)+s2+PN_E+s3;
LU=s1+sU.replace(sTPage,iPC)+s2+PL_E+s3;
}
elseif(iPI==iPC){
FU=s1+sU.replace(sTPage,1)+s2+PF_E+s3;
PU=s1+sU.replace(sTPage,PrevP)+s2+PP_E+s3;
NU=s4+PN_D+s5;
LU=s4+PL_D+s5;
}
else{
FU=s1+sU.replace(sTPage,1)+s2+PF_E+s3;
PU=s1+sU.replace(sTPage,PrevP)+s2+PP_E+s3;
NU=s1+sU.replace(sTPage,NextP)+s2+PN_E+s3;
LU=s1+sU.replace(sTPage,iPC)+s2+PL_E+s3;
}
varPageStart,PageEnd;
if(iPN<0){
iPN=Math.abs(iPN);
PageStart=(iPI%iPN==0)?(iPI/iPN):(this.FormatNum((iPI/iPN),1,0,0,0));
PageStart=(PageStart*iPN==iPI)?((PageStart-1)*iPN+1):(PageStart*iPN+1);
PageEnd=this.FormatNum(PageStart+iPN,0,1,0,iPC)
}
elseif(iPN==0){
PageStart=1;
PageEnd=iPC;
}
else{
PageStart=this.FormatNum((iPI-iPN),1,0,1,0);
PageEnd=this.FormatNum((PageStart+iPN*2),0,1,0,iPC);
PageStart=(PageEnd==iPC)?this.FormatNum((PageEnd-iPN*2),1,0,1,0):PageStart;
}
varPSelect="",PText="",PInput="",p;
if(iPC>=1){
PSelect="<Selectclass=\""+CPS+"\"name=\""+sPI+"\"onChange=\""+sN+".PageJump()\">";
PInput="<Inputclass=\""+CPI+"\"type=\"text\"name=\""+sPI+"\"size=\"5\"maxlength=\"10\"onkeydown=\"if(event.keyCode==13)"+sN+".PageJump()\">";
for(vari=PageStart;i<=PageEnd;i++){
if(i!=iPI){
p=s1+sU.replace(sTPage,i)+s2+PT_E.replace(sTPageNum,i)+s3;
PText+=PTF_E.replace(sTPTextF,p);
PSelect+="<Optionvalue=\""+i+"\">"+PS_E.replace(sTPageNum,i)+"</Option>";
}
else{
p=s4+PT_D.replace(sTPageNum,i)+s5;
PText+=PTF_D.replace(sTPTextF,p);
PSelect+="<OptionSelected=\"Selected\">"+PS_D.replace(sTPageNum,i)+"</Option>";
}
}
PSelect+="</Select>";
}
s=s.replace(sTPage,iPI);
s=s.replace(sTPageCount,iPC);
s=s.replace(sTRecCount,iRC);
s=s.replace(sTPageSize,iPS);
s=s.replace(sTPFrist,FU);
s=s.replace(sTPPrev,PU);
s=s.replace(sTPNext,NU);
s=s.replace(sTPLast,LU);
s=s.replace(sTPText,PText);
s=s.replace(sTPInput,PInput);
s=s.replace(sTPSelect,PSelect);
document.write(s);
}
//输入:欲格式化字符,是否有最小值(0表示没有,1表示有),是否有最大值,最小值(默认值),最大值
Cls_jsPage.prototype.FormatNum=function(sNum,bMin,bMax,iMinNum,iMaxNum){
vari,iN,sN=""+sNum,iMin=iMinNum,iMax=iMaxNum;
if(sN.length>0){
iN=parseInt(sN,10);
i=(isNaN(iN))?iMin:iN;
i=(i<iMin&&bMin==1)?iMin:i;
i=(i>iMax&&bMax==1)?iMax:i;
}
else{
i=iMin;
}
return(i);
}
//输入:欲正则字符,正则表达式,替换后字符
Cls_jsPage.prototype.Reg=function(sStr,sReg,sRe){
vars="",sS=sStr,sR=sReg,sRe=sRe;
if((sS.length>0)&&(sR.length>0)){
eval("re=/"+sR+"/gim;");
s=sS.replace(re,sRe);
}
return(s);
}
//格式化正则中的特殊字符
Cls_jsPage.prototype.FormatReg=function(sReg){
vars="",sR=sReg;
varsF=newArray("/",".","+","[","]","{","}","$","^","?","*");
if(sR.length>0){
for(vari=0;i<=sF.length;i++){
sR=sR.replace(sF[i],"\\"+sF[i]);
}
s="("+sR+")";
}
return(s);
}
demoAC.asp
<%@LANGUAGE="VBSCRIPT"CODEPAGE="936"%>
<!--#includefile="Cls_vbsPage.asp"-->
<%
''-----------------------------------------------------------------------------------------------
OnErrorResumeNext
DIMstartime,endtime
''统计执行时间
startime=timer()
''连接数据库
DIMDb,Conn,Rs
Db="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("db/IP.mdb")
SetConn=Server.CreateObject("ADODB.Connection")
Conn.openDb
''-----------------------------------------------------------------------------------------------
%>
<html>
<head>
<title>叶子ASP分页类-access调用示范</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<styletype="text/css">
<!--
table{font-size:12px}
a{font-size:12px;color:#000000;text-decoration:none}
-->
</style>
</head>
<bodybgcolor="#FFFFFF"text="#000000">
<tablewidth="760"border="0"cellspacing="2"cellpadding="2"align="center"height="30">
<tr>
<td></td>
</tr>
</table>
<tablewidth="760"border="1"cellspacing="0"cellpadding="4"align="center"bordercolordark="#FFFFFF"bordercolorlight="#CCCCCC">
<tralign="center">
<tdwidth="20">ID</td>
<td>标题</td>
<td>内容(显示前20个字)</td>
<td>时间</td>
</tr>
<%
Dimors
Setors=newCls_vbsPage''创建对象
Setors.Conn=conn''得到数据库连接对象
Withors
.PageSize=13''每页记录条数
.PageName="Pages"''cookies名称
.DbType="AC"
''数据库类型,AC为access,MSSQL为sqlserver2000存储过程版,MYSQL为mysql,PGSQL为PostGreSql
.RecType=0
''记录总数(>0为另外取值再赋予或者固定值,0执行count设置存cookies,-1执行count不设置cookies)
.JsUrl=""''Cls_jsPage.js的路径
.Pkey="MID"''主键
.Field="MID,ip2,country,city"
.Table="dv_address"
.Condition=""''条件,不需要where
.OrderBy="MIDDESC"''排序,不需要orderby,需要asc或者desc
EndWith
iRecCount=ors.RecCount()''记录总数
iRs=ors.ResultSet()''返回ResultSet
IfiRecCount<1Then%>
<trbgcolor="">
<td>暂无记录</td>
</tr>
<%
Else
Fori=0ToUbound(iRs,2)%>
<trbgcolor="#FFFFFF">
<td><%=iRs(0,i)%></td>
<td><%=iRs(1,i)%></td>
<td><%=left(iRs(2,i),20)%></td>
<td><%=iRs(3,i)%></td>
</tr><%
Next
EndIf
%>
</table>
<tablewidth="760"border="0"cellspacing="2"cellpadding="2"align="center">
<tr>
<td>
<%ors.ShowPage()%>
</td>
</tr>
</table>
<tablewidth="760"border="0"align="center"cellpadding="2"cellspacing="2">
<tr>
<tdalign="center">
<%endtime=timer()%>
本页面执行时间:<%=FormatNumber((endtime-startime)*1000,3)%>毫秒</td>
</tr>
</table>
</body>
</html>
<%
iRs=NULL
ors=NULL
Setors=NoThing
%>
demoMSSQL.asp
<%@LANGUAGE="VBSCRIPT"CODEPAGE="936"%>
<!--#includefile="Cls_vbsPage.asp"-->
<%
''-----------------------------------------------------------------------------------------------
OnErrorResumeNext
DIMstartime,endtime
''统计执行时间
startime=timer()
''连接数据库
DIMDb,Conn,Rs
strSQLServerName="(local)"''服务器名称或地址
strSQLDBUserName="sa"''数据库帐号
strSQLDBPassword="19811030"''数据库密码
strSQLDBName="showoTemp"''数据库名称
SetConn=Server.CreateObject("ADODB.Connection")
Db="Provider=SQLOLEDB.1;PersistSecurityInfo=False;Server="&strSQLServerName&";UserID="&strSQLDBUserName&";Password="&strSQLDBPassword&";Database="&strSQLDBName&";"
Conn.openDb
''-----------------------------------------------------------------------------------------------
%>
<html>
<head>
<title>叶子ASP分页类-mssql调用示范</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<styletype="text/css">
<!--
table{font-size:12px}
a{font-size:12px;color:#000000;text-decoration:none}
-->
</style>
</head>
<bodybgcolor="#FFFFFF"text="#000000">
<tablewidth="760"border="0"cellspacing="2"cellpadding="2"align="center"height="30">
<tr>
<td></td>
</tr>
</table>
<tablewidth="760"border="1"cellspacing="0"cellpadding="4"align="center"bordercolordark="#FFFFFF"bordercolorlight="#CCCCCC">
<tralign="center">
<tdwidth="20">ID</td>
<td>标题</td>
<td>内容(显示前20个字)</td>
<td>时间</td>
</tr>
<%
Dimors
Setors=newCls_vbsPage''创建对象
Setors.Conn=conn''得到数据库连接对象
Withors
.PageSize=13''每页记录条数
.PageSize=13''每页记录条数
.PageName="Pages"''cookies名称
.DbType="MSSQL"
''数据库类型,AC为access,MSSQL为sqlserver2000存储过程版,MYSQL为mysql,PGSQL为PostGreSql
.RecType=0
''记录总数(>0为另外取值再赋予或者固定值,0执行count设置存cookies,-1执行count不设置cookies)
.JsUrl=""''Cls_jsPage.js的路径
.Pkey="MID"''主键
.Field="MID,ip2,country,city"
.Table="tbTempPage"
.Condition=""''条件,不需要where
.OrderBy="MIDASC"''排序,不需要orderby,需要asc或者desc
EndWith
iRecCount=ors.RecCount()''记录总数
iRs=ors.ResultSet()''返回ResultSet
IfiRecCount<1Then%>
<trbgcolor="">
<td>暂无记录</td>
</tr>
<%
Else
Fori=0ToUbound(iRs,2)%>
<trbgcolor="#FFFFFF">
<td><%=iRs(0,i)%></td>
<td><%=iRs(1,i)%></td>
<td><%=left(iRs(2,i),20)%></td>
<td><%=iRs(3,i)%></td>
</tr><%
Next
EndIf
%>
</table>
<tablewidth="760"border="0"cellspacing="2"cellpadding="2"align="center">
<tr>
<td>
<%ors.ShowPage()%>
</td>
</tr>
</table>
<tablewidth="760"border="0"align="center"cellpadding="2"cellspacing="2">
<tr>
<tdalign="center">
<%endtime=timer()%>
本页面执行时间:<%=FormatNumber((endtime-startime)*1000,3)%>毫秒</td>
</tr>
</table>
</body>
</html>
<%
iRs=NULL
ors=NULL
Setors=NoThing
%>

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

相关文章