白云岛资源网 Design By www.pvray.com
名称: 叶子asp分页类
Name: ShowoPage(vbs class)
RCSfile: ReadMe.txt
Revision: 0.12.20051114.f
Author: Yehe(叶子)
Released: 2005-11-14 09:40:13
Descript: ASP分页类,支持access/mssql/mysql/sqlite
Contact: QQ:311673 MSN:myehe@msn.com GT:mmyehe@gmail.com
WebSite: http://www.yehe.org http://www.showo.com
------------------------------------------------
Licenses:
本程序遵循GPL协议.
协议原文地址:http://www.gnu.org/licenses/licenses.cn.html#GPL
------------------------------------------------
Thanks:
可洛: 感谢mssql分页核心部分
Arbiter: 感谢部分分页思路
才子: 感谢推广
foxty: 感谢分页思路
------------------------------------------------
Install:
1.具体调用方法可以看demo的asp文档.
2.mssql存储过程版的请先执行sp_Util_Page.sql文件添加存储过程.
3.sp调用方法:
exec sp_Util_Page 440000,4,10,''MID'',''MID,ip1,ip2,country,city'',''tbTempPage'',''1=1'',''mid asc''
记录条数(已有值:序外部赋值,0执行count),当前页数,每页记录数,主键,字段,表,条件(不需要where),排序(不需要order by,需要asc和desc字符)
如果不按主键排序,则排序赋值里面不能出现主键字符.
------------------------------------------------
Release:
0.12
1.取text字段类型bug修正
2.存储过程bug修正
3.代码修正
0.11
1.存储过程加了非主键排序下的分页
2.去掉了mssql的非存储过程版分页
0.10:
1.条件简化
2.存储过程优化
0.09:
1.排序判断部分优化
0.08:
1.vbs bug修正
0.07:
1.bug修正,包括vbs类和js
0.06Beta:
1.js浏览器兼容优化
2.类几个函数的bug修正
0.05Beta:
1.全面代码优化,mysql/sqlite支持
2.参数输入方式修改
0.04Beta:
1.做到调用代码一样适应多种数据库集成分页
2.js去掉了表单,支持静态提交
3.加上了存储过程
0.03Beta:
1.公开发布的显示为0.02,其实为0.03,分为ac版类,mssql版类发布
2.js的bug修正
3.写成了类,进一步方便调用
0.02Beta:
1.加上对mssql的支持
2.封装成了函数版,方便调用
3.js文件的优化
0.01Beta:
1.没有写成函数,只是找到了比较快的ac分页方法
2.分页样式用js显示
------------------------------------------------
File:
db/IP.mdb access测试数据库
db/IP mssql备份测试数据库
Cls_vbsPage.asp 分页类
Cls_jsPage.js js分页样式
sp_Util_Page.sql mssql存储过程
demoAC.asp ac分页调用示范
demoMSSQL.asp mssql调用示范
demoMSSQL_SP.asp mssql存储过程调用示范
Cls_vbsPage.asp
<%
Class Cls_vbsPage
Private oConn ''连接对象
Private iPagesize ''每页记录数
Private sPageName ''地址栏页数参数名
Private sDbType
''数据库类型,AC为access,MSSQL为SQL SERVER2000存储过程版,MYSQL为mysql,PGSQL为PostGreSql
Private iRecType ''记录总数(>0为另外取值再赋予或者固定值,0执行count设置存cookies,-1执行count不设置cookies)
Private sJsUrl ''Cls_jsPage.js的路径
Private sField ''字段名
Private sTable ''表名
Private sCondition ''条件,不需要where
Private sOrderBy ''排序,不需要order by,需要asc或者desc
Private sPkey ''主键,必写
Private iRecCount
''================================================================
'' Class_Initialize 类的初始化
''================================================================
Private Sub Class_Initialize
iPageSize=10
sPageName="Page"
sDbType="AC"
iRecType=0
sJsUrl=""
sField=" * "
End Sub
''================================================================
'' Conn 得到数据库连接对象
''================================================================
Public Property Set Conn(ByRef Value)
Set oConn=Value
End Property
''================================================================
'' PageSize 设置每一页记录条数,默认10记录
''================================================================
Public Property Let PageSize(ByVal intPageSize)
iPageSize=CheckNum(intPageSize,0,0,iPageSize,0)
End Property
''================================================================
'' PageName 地址栏页数参数名
''================================================================
Public Property Let PageName(ByVal strPageName)
sPageName=IIf(Len(strPageName)<1,sPageName,strPageName)
End Property
''================================================================
'' DbType 得到数据库类型
''================================================================
Public Property Let DbType(ByVal strDbType)
sDbType=UCase(IIf(Len(strDbType)<1,sDbType,strDbType))
End Property
''================================================================
'' RecType 取记录总数(>0为赋值或者固定值,0执行count设置存cookies,-1执行count不设置cookies适用于搜索)
''================================================================
Public Property Let RecType(ByVal intRecType)
iRecType=CheckNum(intRecType,0,0,iRecType,0)
End Property
''================================================================
'' JsUrl 取得Cls_jsPage.js的路径
''================================================================
Public Property Let JsUrl(ByVal strJsUrl)
sJsUrl=strJsUrl
End Property
''================================================================
'' Pkey 取得主键
''================================================================
Public Property Let Pkey(ByVal strPkey)
sPkey=strPkey
End Property
''================================================================
'' Field 取得字段名
''================================================================
Public Property Let Field(ByVal strField)
sField=IIf(Len(strField)<1,sField,strField)
End Property
''================================================================
'' Table 取得表名
''================================================================
Public Property Let Table(ByVal strTable)
sTable=strTable
End Property
''================================================================
'' Condition 取得条件
''================================================================
Public Property Let Condition(ByVal strCondition)
s=strCondition
sCondition=IIf(Len(s)>2," WHERE "&s,"")
End Property
''================================================================
'' OrderBy 取得排序
''================================================================
Public Property Let OrderBy(ByVal strOrderBy)
s=strOrderBy
sOrderBy=IIf(Len(s)>4," ORDER BY "&s,"")
End Property
''================================================================
'' RecCount 修正记录总数
''================================================================
Public Property Get RecCount()
If iRecType>0 Then
i=iRecType
Elseif iRecType=0 Then
i=CheckNum(Request.Cookies("ShowoPage")(sPageName),1,0,0,0)
s=Trim(Request.Cookies("ShowoPage")("sCond"))
IF i=0 OR sCondition<>s Then
i=oConn.Execute("SELECT COUNT("&sPkey&") FROM "&sTable&" "&sCondition,0,1)(0)
Response.Cookies("ShowoPage")(sPageName)=i
Response.Cookies("ShowoPage")("sCond")=sCondition
End If
Else
i=oConn.Execute("SELECT COUNT("&sPkey&") FROM "&sTable&" "&sCondition,0,1)(0)
End If
iRecCount=i
RecCount=i
End Property
''================================================================
'' ResultSet 返回分页后的记录集
''================================================================
Public Property Get ResultSet()
s=Null
''记录总数
i=iRecCount
''当前页
If i>0 Then
iPageCount=Abs(Int(-Abs(i/iPageSize)))''页数
iPageCurr=CheckNum(Request.QueryString(sPageName),1,1,1,iPageCount)''当前页
Select Case sDbType
Case "MSSQL" ''sqlserver2000数据库存储过程版
Set Rs=server.CreateObject("Adodb.RecordSet")
Set Cm=Server.CreateObject("Adodb.Command")
Cm.CommandType=4
Cm.ActiveConnection=oConn
Cm.CommandText="sp_Util_Page"
Cm.parameters(1)=i
Cm.parameters(2)=iPageCurr
Cm.parameters(3)=iPageSize
Cm.parameters(4)=sPkey
Cm.parameters(5)=sField
Cm.parameters(6)=sTable
Cm.parameters(7)=Replace(sCondition," WHERE ","")
Cm.parameters(8)=Replace(sOrderBy," ORDER BY ","")
Rs.CursorLocation=3
Rs.LockType=1
Rs.Open Cm
Case "MYSQL" ''MYSQL数据库
ResultSet_Sql="SELECT "&sField&" FROM "&sTable&" "&sCondition&" "&sOrderBy&" LIMIT "&(iPageCurr-1)*iPageSize&","&iPageSize
Set Rs=oConn.Execute(ResultSet_Sql)
Case Else ''其他情况按最原始的方法处理(AC同理)
Set Rs = Server.CreateObject ("Adodb.RecordSet")
ResultSet_Sql="SELECT "&sField&" FROM "&sTable&" "&sCondition&" "&sOrderBy
Rs.Open ResultSet_Sql,oConn,1,1,&H0001
Rs.AbsolutePosition=(iPageCurr-1)*iPageSize+1
End Select
s=Rs.GetRows(iPageSize)
Rs.close
Set Rs=Nothing
End If
ResultSet=s
End Property
''================================================================
'' Class_Terminate 类注销
''================================================================
Private Sub Class_Terminate()
If IsObject(oConn) Then oConn.Close:Set oConn=Nothing
End Sub
''================================================================
'' 输入:检查字符,是否有最小值,是否有最大值,最小值(默认数字),最大值
''================================================================
Private Function CheckNum(ByVal strStr,ByVal blnMin,ByVal blnMax,ByVal intMin,ByVal intMax)
Dim i,s,iMi,iMa
s=Left(Trim(""&strStr),32):iMi=intMin:iMa=intMax
If IsNumeric(s) Then
i=CDbl(s)
i=IIf(blnMin=1 And i<iMi,iMi,i)
i=IIf(blnMax=1 And i>iMa,iMa,i)
Else
i=iMi
End If
CheckNum=i
End Function
''================================================================
'' 输入:简化条件判断
''================================================================
Private Function IIf(ByVal blnBool,ByVal strStr1,ByVal strStr2)
Dim s
If blnBool Then
s=strStr1
Else
s=strStr2
End If
IIf=s
End Function
''================================================================
'' 上下页部分
''================================================================
Public Sub ShowPage()%>
<Script Language="JavaScript" type="text/JavaScript" src="/UploadFiles/2021-04-02/<%=sJsUrl%>Cls_jsPage.js"> <Script Language="JavaScript" type="text/JavaScript">
var s= new Cls_jsPage(<%=iRecCount%>,<%=iPageSize%>,3,"s");
s.setPageSE("<%=sPageName%>=","");
s.setPageInput("<%=sPageName%>");
s.setUrl("");
s.setPageFrist("首页","<<");
s.setPagePrev("上页","<");
s.setPageNext("下页",">");
s.setPageLast("尾页","");
s.setPageText("[{$PageNum}]","第{$PageNum}页");
s.setPageTextF(" {$PageTextF} "," {$PageTextF} ");
s.setPageSelect("{$PageNum}","第{$PageNum}页");
s.setPageCss("","","");
s.setHtml("共{$RecCount}记录 页次{$Page}/{$PageCount} 每页{$PageSize}条 {$PageFrist} {$PagePrev} {$PageText} {$PageNext} {$PageLast} {$PageInput} {$PageSelect}");
s.Write();
</Script>
<%End Sub
End Class%>
Cls_jsPage.js
/**
*=================================================================
*Name: 叶子js分页样式(ShowoPage Style With JS)
*RCSfile: Cls_jsPage.js
*Revision: 0.09
*Author: Yehe(叶子)
*Released: 2005-05-12 23:00:15
*Description: js分页样式,显示上一页下一页的翻页结果
*Contact: QQ:311673,MSN:myehe@msn.com
*WebSite: http://www.yehe.org,http://www.showo.com
*=================================================================
*/
function Cls_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){
var sPS=sPageStart,sPE=sPageEnd;
this.sPS=(sPS.length>0)?sPS:"Page=";
this.sPE=(sPE.length>0)?sPE:"";
}
//输入 网址
Cls_jsPage.prototype.setUrl=function(sUrl){
var s=sUrl;
this.Url=(s.length>0)?s:""+document.location;
}
//输入 输入框&下拉框name值
Cls_jsPage.prototype.setPageInput=function(sPageInput){
var sPI=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(){
var iRC=this.iRC,iPS=this.iPS;
var i=(iRC%iPS==0)?(iRC/iPS):(this.FormatNum((iRC/iPS),1,0,0,0)+1);
return (i);
}
//取得模板页数和当前页数
Cls_jsPage.prototype.getUrl=function(iType){
var s=this.Url,sPS=this.sPS,sPE=this.sPE,sTP=this.sTPage,iPC=this.iPC;
var iT=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*)";
var sPIndex=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(){
var sPL,sPV,sP;
var sU=this.getUrl(0),iPI=this.getUrl(1);
var sPI=this.sPI,sTP=this.sTPage,iPC=this.iPC;
sPL=document.getElementsByName(sPI).length;
for (var i=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(){
var sU=this.getUrl(0),iPI=this.getUrl(1);
var sN=this.sN,sPI=this.sPI;
var iPC=this.iPC,iPN=this.iPN;;
var iRC=this.iRC,iPS=this.iPS;
var PF_D=this.PF_D,PF_E=this.PF_E;
var PP_D=this.PP_D,PP_E=this.PP_E;
var PN_D=this.PN_D,PN_E=this.PN_E;
var PL_D=this.PL_D,PL_E=this.PL_E;
var PT_D=this.PT_D,PT_E=this.PT_E;
var PTF_D=this.PTF_D,PTF_E=this.PTF_E;
var PS_D=this.PS_D,PS_E=this.PS_E;
var CPT=this.CPT,CPI=this.CPI;
var CPS=this.CPS,iPN=this.iPN;
var s=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;
var PrevP=this.FormatNum((iPI-1),1,1,1,iPC),NextP=this.FormatNum((iPI+1),1,1,1,iPC);
var FU,PU,NU,LU;
var s1="<span class=\""+CPT+"\"><A href=\"",s2="\">",s3="</A></span>";
var s4="<span class=\""+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;
}
else if (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;
}
else if (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;
}
var PageStart,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)
}
else if (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;
}
var PSelect="",PText="",PInput="",p;
if (iPC>=1) {
PSelect="<Select class=\""+CPS+"\" name=\""+sPI+"\" onChange=\""+sN+".PageJump()\">";
PInput="<Input class=\""+CPI+"\" type=\"text\" name=\""+sPI+"\" size=\"5\" maxlength=\"10\" onkeydown=\"if (event.keyCode==13) "+sN+".PageJump()\">";
for (var i=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+="<Option value=\""+i+"\">"+PS_E.replace(sTPageNum,i)+"</Option>";
}
else {
p=s4+PT_D.replace(sTPageNum,i)+s5;
PText+=PTF_D.replace(sTPTextF,p);
PSelect+="<Option Selected=\"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){
var i,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){
var s="",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){
var s="",sR=sReg;
var sF=new Array ("/",".","+","[","]","{","}","$","^","?","*");
if (sR.length>0) {
for (var i=0;i<=sF.length;i++) {
sR=sR.replace(sF[i],"\\"+sF[i]);
}
s="("+sR+")";
}
return (s);
}
demoAC.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="Cls_vbsPage.asp"-->
<%
''-----------------------------------------------------------------------------------------------
On Error Resume Next
DIM startime,endtime
''统计执行时间
startime=timer()
''连接数据库
DIM Db,Conn,Rs
Db = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/IP.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open Db
''-----------------------------------------------------------------------------------------------
%>
<html>
<head>
<title>叶子ASP分页类-access调用示范</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
table { font-size: 12px}
a { font-size: 12px; color: #000000; text-decoration: none}
-->
</style>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table width="760" border="0" cellspacing="2" cellpadding="2" align="center" height="30">
<tr>
<td> </td>
</tr>
</table>
<table width="760" border="1" cellspacing="0" cellpadding="4" align="center" bordercolordark="#FFFFFF" bordercolorlight="#CCCCCC">
<tr align="center">
<td width="20">ID</td>
<td>标题</td>
<td>内容(显示前20个字)</td>
<td>时间</td>
</tr>
<%
Dim ors
Set ors=new Cls_vbsPage ''创建对象
Set ors.Conn=conn ''得到数据库连接对象
With ors
.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="MID DESC" ''排序,不需要order by,需要asc或者desc
End With
iRecCount=ors.RecCount()''记录总数
iRs=ors.ResultSet() ''返回ResultSet
If iRecCount<1 Then%>
<tr bgcolor="">
<td >暂无记录</td>
</tr>
<%
Else
For i=0 To Ubound(iRs,2)%>
<tr bgcolor="#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
End If
%>
</table>
<table width="760" border="0" cellspacing="2" cellpadding="2" align="center">
<tr>
<td>
<%ors.ShowPage()%>
</td>
</tr>
</table>
<table width="760" border="0" align="center" cellpadding="2" cellspacing="2">
<tr>
<td align="center">
<%endtime=timer()%>
本页面执行时间:<%=FormatNumber((endtime-startime)*1000,3)%>毫秒</td>
</tr>
</table>
</body>
</html>
<%
iRs=NULL
ors=NULL
Set ors=NoThing
%>
demoMSSQL.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="Cls_vbsPage.asp"-->
<%
''-----------------------------------------------------------------------------------------------
On Error Resume Next
DIM startime,endtime
''统计执行时间
startime=timer()
''连接数据库
DIM Db,Conn,Rs
strSQLServerName = "(local)" ''服务器名称或地址
strSQLDBUserName = "sa" ''数据库帐号
strSQLDBPassword = "19811030" ''数据库密码
strSQLDBName = "showoTemp" ''数据库名称
Set Conn = Server.CreateObject("ADODB.Connection")
Db = "Provider=SQLOLEDB.1;Persist Security Info=False;Server=" & strSQLServerName & ";User ID=" & strSQLDBUserName & ";Password=" & strSQLDBPassword & ";Database=" & strSQLDBName & ";"
Conn.open Db
''-----------------------------------------------------------------------------------------------
%>
<html>
<head>
<title>叶子ASP分页类-mssql调用示范</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
table { font-size: 12px}
a { font-size: 12px; color: #000000; text-decoration: none}
-->
</style>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table width="760" border="0" cellspacing="2" cellpadding="2" align="center" height="30">
<tr>
<td> </td>
</tr>
</table>
<table width="760" border="1" cellspacing="0" cellpadding="4" align="center" bordercolordark="#FFFFFF" bordercolorlight="#CCCCCC">
<tr align="center">
<td width="20">ID</td>
<td>标题</td>
<td>内容(显示前20个字)</td>
<td>时间</td>
</tr>
<%
Dim ors
Set ors=new Cls_vbsPage ''创建对象
Set ors.Conn=conn ''得到数据库连接对象
With ors
.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="MID ASC" ''排序,不需要order by,需要asc或者desc
End With
iRecCount=ors.RecCount()''记录总数
iRs=ors.ResultSet() ''返回ResultSet
If iRecCount<1 Then%>
<tr bgcolor="">
<td >暂无记录</td>
</tr>
<%
Else
For i=0 To Ubound(iRs,2)%>
<tr bgcolor="#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
End If
%>
</table>
<table width="760" border="0" cellspacing="2" cellpadding="2" align="center">
<tr>
<td>
<%ors.ShowPage()%>
</td>
</tr>
</table>
<table width="760" border="0" align="center" cellpadding="2" cellspacing="2">
<tr>
<td align="center">
<%endtime=timer()%>
本页面执行时间:<%=FormatNumber((endtime-startime)*1000,3)%>毫秒</td>
</tr>
</table>
</body>
</html>
<%
iRs=NULL
ors=NULL
Set ors=NoThing
%>
Name: ShowoPage(vbs class)
RCSfile: ReadMe.txt
Revision: 0.12.20051114.f
Author: Yehe(叶子)
Released: 2005-11-14 09:40:13
Descript: ASP分页类,支持access/mssql/mysql/sqlite
Contact: QQ:311673 MSN:myehe@msn.com GT:mmyehe@gmail.com
WebSite: http://www.yehe.org http://www.showo.com
------------------------------------------------
Licenses:
本程序遵循GPL协议.
协议原文地址:http://www.gnu.org/licenses/licenses.cn.html#GPL
------------------------------------------------
Thanks:
可洛: 感谢mssql分页核心部分
Arbiter: 感谢部分分页思路
才子: 感谢推广
foxty: 感谢分页思路
------------------------------------------------
Install:
1.具体调用方法可以看demo的asp文档.
2.mssql存储过程版的请先执行sp_Util_Page.sql文件添加存储过程.
3.sp调用方法:
exec sp_Util_Page 440000,4,10,''MID'',''MID,ip1,ip2,country,city'',''tbTempPage'',''1=1'',''mid asc''
记录条数(已有值:序外部赋值,0执行count),当前页数,每页记录数,主键,字段,表,条件(不需要where),排序(不需要order by,需要asc和desc字符)
如果不按主键排序,则排序赋值里面不能出现主键字符.
------------------------------------------------
Release:
0.12
1.取text字段类型bug修正
2.存储过程bug修正
3.代码修正
0.11
1.存储过程加了非主键排序下的分页
2.去掉了mssql的非存储过程版分页
0.10:
1.条件简化
2.存储过程优化
0.09:
1.排序判断部分优化
0.08:
1.vbs bug修正
0.07:
1.bug修正,包括vbs类和js
0.06Beta:
1.js浏览器兼容优化
2.类几个函数的bug修正
0.05Beta:
1.全面代码优化,mysql/sqlite支持
2.参数输入方式修改
0.04Beta:
1.做到调用代码一样适应多种数据库集成分页
2.js去掉了表单,支持静态提交
3.加上了存储过程
0.03Beta:
1.公开发布的显示为0.02,其实为0.03,分为ac版类,mssql版类发布
2.js的bug修正
3.写成了类,进一步方便调用
0.02Beta:
1.加上对mssql的支持
2.封装成了函数版,方便调用
3.js文件的优化
0.01Beta:
1.没有写成函数,只是找到了比较快的ac分页方法
2.分页样式用js显示
------------------------------------------------
File:
db/IP.mdb access测试数据库
db/IP mssql备份测试数据库
Cls_vbsPage.asp 分页类
Cls_jsPage.js js分页样式
sp_Util_Page.sql mssql存储过程
demoAC.asp ac分页调用示范
demoMSSQL.asp mssql调用示范
demoMSSQL_SP.asp mssql存储过程调用示范
Cls_vbsPage.asp
<%
Class Cls_vbsPage
Private oConn ''连接对象
Private iPagesize ''每页记录数
Private sPageName ''地址栏页数参数名
Private sDbType
''数据库类型,AC为access,MSSQL为SQL SERVER2000存储过程版,MYSQL为mysql,PGSQL为PostGreSql
Private iRecType ''记录总数(>0为另外取值再赋予或者固定值,0执行count设置存cookies,-1执行count不设置cookies)
Private sJsUrl ''Cls_jsPage.js的路径
Private sField ''字段名
Private sTable ''表名
Private sCondition ''条件,不需要where
Private sOrderBy ''排序,不需要order by,需要asc或者desc
Private sPkey ''主键,必写
Private iRecCount
''================================================================
'' Class_Initialize 类的初始化
''================================================================
Private Sub Class_Initialize
iPageSize=10
sPageName="Page"
sDbType="AC"
iRecType=0
sJsUrl=""
sField=" * "
End Sub
''================================================================
'' Conn 得到数据库连接对象
''================================================================
Public Property Set Conn(ByRef Value)
Set oConn=Value
End Property
''================================================================
'' PageSize 设置每一页记录条数,默认10记录
''================================================================
Public Property Let PageSize(ByVal intPageSize)
iPageSize=CheckNum(intPageSize,0,0,iPageSize,0)
End Property
''================================================================
'' PageName 地址栏页数参数名
''================================================================
Public Property Let PageName(ByVal strPageName)
sPageName=IIf(Len(strPageName)<1,sPageName,strPageName)
End Property
''================================================================
'' DbType 得到数据库类型
''================================================================
Public Property Let DbType(ByVal strDbType)
sDbType=UCase(IIf(Len(strDbType)<1,sDbType,strDbType))
End Property
''================================================================
'' RecType 取记录总数(>0为赋值或者固定值,0执行count设置存cookies,-1执行count不设置cookies适用于搜索)
''================================================================
Public Property Let RecType(ByVal intRecType)
iRecType=CheckNum(intRecType,0,0,iRecType,0)
End Property
''================================================================
'' JsUrl 取得Cls_jsPage.js的路径
''================================================================
Public Property Let JsUrl(ByVal strJsUrl)
sJsUrl=strJsUrl
End Property
''================================================================
'' Pkey 取得主键
''================================================================
Public Property Let Pkey(ByVal strPkey)
sPkey=strPkey
End Property
''================================================================
'' Field 取得字段名
''================================================================
Public Property Let Field(ByVal strField)
sField=IIf(Len(strField)<1,sField,strField)
End Property
''================================================================
'' Table 取得表名
''================================================================
Public Property Let Table(ByVal strTable)
sTable=strTable
End Property
''================================================================
'' Condition 取得条件
''================================================================
Public Property Let Condition(ByVal strCondition)
s=strCondition
sCondition=IIf(Len(s)>2," WHERE "&s,"")
End Property
''================================================================
'' OrderBy 取得排序
''================================================================
Public Property Let OrderBy(ByVal strOrderBy)
s=strOrderBy
sOrderBy=IIf(Len(s)>4," ORDER BY "&s,"")
End Property
''================================================================
'' RecCount 修正记录总数
''================================================================
Public Property Get RecCount()
If iRecType>0 Then
i=iRecType
Elseif iRecType=0 Then
i=CheckNum(Request.Cookies("ShowoPage")(sPageName),1,0,0,0)
s=Trim(Request.Cookies("ShowoPage")("sCond"))
IF i=0 OR sCondition<>s Then
i=oConn.Execute("SELECT COUNT("&sPkey&") FROM "&sTable&" "&sCondition,0,1)(0)
Response.Cookies("ShowoPage")(sPageName)=i
Response.Cookies("ShowoPage")("sCond")=sCondition
End If
Else
i=oConn.Execute("SELECT COUNT("&sPkey&") FROM "&sTable&" "&sCondition,0,1)(0)
End If
iRecCount=i
RecCount=i
End Property
''================================================================
'' ResultSet 返回分页后的记录集
''================================================================
Public Property Get ResultSet()
s=Null
''记录总数
i=iRecCount
''当前页
If i>0 Then
iPageCount=Abs(Int(-Abs(i/iPageSize)))''页数
iPageCurr=CheckNum(Request.QueryString(sPageName),1,1,1,iPageCount)''当前页
Select Case sDbType
Case "MSSQL" ''sqlserver2000数据库存储过程版
Set Rs=server.CreateObject("Adodb.RecordSet")
Set Cm=Server.CreateObject("Adodb.Command")
Cm.CommandType=4
Cm.ActiveConnection=oConn
Cm.CommandText="sp_Util_Page"
Cm.parameters(1)=i
Cm.parameters(2)=iPageCurr
Cm.parameters(3)=iPageSize
Cm.parameters(4)=sPkey
Cm.parameters(5)=sField
Cm.parameters(6)=sTable
Cm.parameters(7)=Replace(sCondition," WHERE ","")
Cm.parameters(8)=Replace(sOrderBy," ORDER BY ","")
Rs.CursorLocation=3
Rs.LockType=1
Rs.Open Cm
Case "MYSQL" ''MYSQL数据库
ResultSet_Sql="SELECT "&sField&" FROM "&sTable&" "&sCondition&" "&sOrderBy&" LIMIT "&(iPageCurr-1)*iPageSize&","&iPageSize
Set Rs=oConn.Execute(ResultSet_Sql)
Case Else ''其他情况按最原始的方法处理(AC同理)
Set Rs = Server.CreateObject ("Adodb.RecordSet")
ResultSet_Sql="SELECT "&sField&" FROM "&sTable&" "&sCondition&" "&sOrderBy
Rs.Open ResultSet_Sql,oConn,1,1,&H0001
Rs.AbsolutePosition=(iPageCurr-1)*iPageSize+1
End Select
s=Rs.GetRows(iPageSize)
Rs.close
Set Rs=Nothing
End If
ResultSet=s
End Property
''================================================================
'' Class_Terminate 类注销
''================================================================
Private Sub Class_Terminate()
If IsObject(oConn) Then oConn.Close:Set oConn=Nothing
End Sub
''================================================================
'' 输入:检查字符,是否有最小值,是否有最大值,最小值(默认数字),最大值
''================================================================
Private Function CheckNum(ByVal strStr,ByVal blnMin,ByVal blnMax,ByVal intMin,ByVal intMax)
Dim i,s,iMi,iMa
s=Left(Trim(""&strStr),32):iMi=intMin:iMa=intMax
If IsNumeric(s) Then
i=CDbl(s)
i=IIf(blnMin=1 And i<iMi,iMi,i)
i=IIf(blnMax=1 And i>iMa,iMa,i)
Else
i=iMi
End If
CheckNum=i
End Function
''================================================================
'' 输入:简化条件判断
''================================================================
Private Function IIf(ByVal blnBool,ByVal strStr1,ByVal strStr2)
Dim s
If blnBool Then
s=strStr1
Else
s=strStr2
End If
IIf=s
End Function
''================================================================
'' 上下页部分
''================================================================
Public Sub ShowPage()%>
<Script Language="JavaScript" type="text/JavaScript" src="/UploadFiles/2021-04-02/<%=sJsUrl%>Cls_jsPage.js"> <Script Language="JavaScript" type="text/JavaScript">
var s= new Cls_jsPage(<%=iRecCount%>,<%=iPageSize%>,3,"s");
s.setPageSE("<%=sPageName%>=","");
s.setPageInput("<%=sPageName%>");
s.setUrl("");
s.setPageFrist("首页","<<");
s.setPagePrev("上页","<");
s.setPageNext("下页",">");
s.setPageLast("尾页","");
s.setPageText("[{$PageNum}]","第{$PageNum}页");
s.setPageTextF(" {$PageTextF} "," {$PageTextF} ");
s.setPageSelect("{$PageNum}","第{$PageNum}页");
s.setPageCss("","","");
s.setHtml("共{$RecCount}记录 页次{$Page}/{$PageCount} 每页{$PageSize}条 {$PageFrist} {$PagePrev} {$PageText} {$PageNext} {$PageLast} {$PageInput} {$PageSelect}");
s.Write();
</Script>
<%End Sub
End Class%>
Cls_jsPage.js
/**
*=================================================================
*Name: 叶子js分页样式(ShowoPage Style With JS)
*RCSfile: Cls_jsPage.js
*Revision: 0.09
*Author: Yehe(叶子)
*Released: 2005-05-12 23:00:15
*Description: js分页样式,显示上一页下一页的翻页结果
*Contact: QQ:311673,MSN:myehe@msn.com
*WebSite: http://www.yehe.org,http://www.showo.com
*=================================================================
*/
function Cls_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){
var sPS=sPageStart,sPE=sPageEnd;
this.sPS=(sPS.length>0)?sPS:"Page=";
this.sPE=(sPE.length>0)?sPE:"";
}
//输入 网址
Cls_jsPage.prototype.setUrl=function(sUrl){
var s=sUrl;
this.Url=(s.length>0)?s:""+document.location;
}
//输入 输入框&下拉框name值
Cls_jsPage.prototype.setPageInput=function(sPageInput){
var sPI=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(){
var iRC=this.iRC,iPS=this.iPS;
var i=(iRC%iPS==0)?(iRC/iPS):(this.FormatNum((iRC/iPS),1,0,0,0)+1);
return (i);
}
//取得模板页数和当前页数
Cls_jsPage.prototype.getUrl=function(iType){
var s=this.Url,sPS=this.sPS,sPE=this.sPE,sTP=this.sTPage,iPC=this.iPC;
var iT=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*)";
var sPIndex=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(){
var sPL,sPV,sP;
var sU=this.getUrl(0),iPI=this.getUrl(1);
var sPI=this.sPI,sTP=this.sTPage,iPC=this.iPC;
sPL=document.getElementsByName(sPI).length;
for (var i=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(){
var sU=this.getUrl(0),iPI=this.getUrl(1);
var sN=this.sN,sPI=this.sPI;
var iPC=this.iPC,iPN=this.iPN;;
var iRC=this.iRC,iPS=this.iPS;
var PF_D=this.PF_D,PF_E=this.PF_E;
var PP_D=this.PP_D,PP_E=this.PP_E;
var PN_D=this.PN_D,PN_E=this.PN_E;
var PL_D=this.PL_D,PL_E=this.PL_E;
var PT_D=this.PT_D,PT_E=this.PT_E;
var PTF_D=this.PTF_D,PTF_E=this.PTF_E;
var PS_D=this.PS_D,PS_E=this.PS_E;
var CPT=this.CPT,CPI=this.CPI;
var CPS=this.CPS,iPN=this.iPN;
var s=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;
var PrevP=this.FormatNum((iPI-1),1,1,1,iPC),NextP=this.FormatNum((iPI+1),1,1,1,iPC);
var FU,PU,NU,LU;
var s1="<span class=\""+CPT+"\"><A href=\"",s2="\">",s3="</A></span>";
var s4="<span class=\""+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;
}
else if (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;
}
else if (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;
}
var PageStart,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)
}
else if (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;
}
var PSelect="",PText="",PInput="",p;
if (iPC>=1) {
PSelect="<Select class=\""+CPS+"\" name=\""+sPI+"\" onChange=\""+sN+".PageJump()\">";
PInput="<Input class=\""+CPI+"\" type=\"text\" name=\""+sPI+"\" size=\"5\" maxlength=\"10\" onkeydown=\"if (event.keyCode==13) "+sN+".PageJump()\">";
for (var i=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+="<Option value=\""+i+"\">"+PS_E.replace(sTPageNum,i)+"</Option>";
}
else {
p=s4+PT_D.replace(sTPageNum,i)+s5;
PText+=PTF_D.replace(sTPTextF,p);
PSelect+="<Option Selected=\"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){
var i,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){
var s="",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){
var s="",sR=sReg;
var sF=new Array ("/",".","+","[","]","{","}","$","^","?","*");
if (sR.length>0) {
for (var i=0;i<=sF.length;i++) {
sR=sR.replace(sF[i],"\\"+sF[i]);
}
s="("+sR+")";
}
return (s);
}
demoAC.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="Cls_vbsPage.asp"-->
<%
''-----------------------------------------------------------------------------------------------
On Error Resume Next
DIM startime,endtime
''统计执行时间
startime=timer()
''连接数据库
DIM Db,Conn,Rs
Db = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/IP.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open Db
''-----------------------------------------------------------------------------------------------
%>
<html>
<head>
<title>叶子ASP分页类-access调用示范</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
table { font-size: 12px}
a { font-size: 12px; color: #000000; text-decoration: none}
-->
</style>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table width="760" border="0" cellspacing="2" cellpadding="2" align="center" height="30">
<tr>
<td> </td>
</tr>
</table>
<table width="760" border="1" cellspacing="0" cellpadding="4" align="center" bordercolordark="#FFFFFF" bordercolorlight="#CCCCCC">
<tr align="center">
<td width="20">ID</td>
<td>标题</td>
<td>内容(显示前20个字)</td>
<td>时间</td>
</tr>
<%
Dim ors
Set ors=new Cls_vbsPage ''创建对象
Set ors.Conn=conn ''得到数据库连接对象
With ors
.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="MID DESC" ''排序,不需要order by,需要asc或者desc
End With
iRecCount=ors.RecCount()''记录总数
iRs=ors.ResultSet() ''返回ResultSet
If iRecCount<1 Then%>
<tr bgcolor="">
<td >暂无记录</td>
</tr>
<%
Else
For i=0 To Ubound(iRs,2)%>
<tr bgcolor="#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
End If
%>
</table>
<table width="760" border="0" cellspacing="2" cellpadding="2" align="center">
<tr>
<td>
<%ors.ShowPage()%>
</td>
</tr>
</table>
<table width="760" border="0" align="center" cellpadding="2" cellspacing="2">
<tr>
<td align="center">
<%endtime=timer()%>
本页面执行时间:<%=FormatNumber((endtime-startime)*1000,3)%>毫秒</td>
</tr>
</table>
</body>
</html>
<%
iRs=NULL
ors=NULL
Set ors=NoThing
%>
demoMSSQL.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="Cls_vbsPage.asp"-->
<%
''-----------------------------------------------------------------------------------------------
On Error Resume Next
DIM startime,endtime
''统计执行时间
startime=timer()
''连接数据库
DIM Db,Conn,Rs
strSQLServerName = "(local)" ''服务器名称或地址
strSQLDBUserName = "sa" ''数据库帐号
strSQLDBPassword = "19811030" ''数据库密码
strSQLDBName = "showoTemp" ''数据库名称
Set Conn = Server.CreateObject("ADODB.Connection")
Db = "Provider=SQLOLEDB.1;Persist Security Info=False;Server=" & strSQLServerName & ";User ID=" & strSQLDBUserName & ";Password=" & strSQLDBPassword & ";Database=" & strSQLDBName & ";"
Conn.open Db
''-----------------------------------------------------------------------------------------------
%>
<html>
<head>
<title>叶子ASP分页类-mssql调用示范</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
table { font-size: 12px}
a { font-size: 12px; color: #000000; text-decoration: none}
-->
</style>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table width="760" border="0" cellspacing="2" cellpadding="2" align="center" height="30">
<tr>
<td> </td>
</tr>
</table>
<table width="760" border="1" cellspacing="0" cellpadding="4" align="center" bordercolordark="#FFFFFF" bordercolorlight="#CCCCCC">
<tr align="center">
<td width="20">ID</td>
<td>标题</td>
<td>内容(显示前20个字)</td>
<td>时间</td>
</tr>
<%
Dim ors
Set ors=new Cls_vbsPage ''创建对象
Set ors.Conn=conn ''得到数据库连接对象
With ors
.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="MID ASC" ''排序,不需要order by,需要asc或者desc
End With
iRecCount=ors.RecCount()''记录总数
iRs=ors.ResultSet() ''返回ResultSet
If iRecCount<1 Then%>
<tr bgcolor="">
<td >暂无记录</td>
</tr>
<%
Else
For i=0 To Ubound(iRs,2)%>
<tr bgcolor="#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
End If
%>
</table>
<table width="760" border="0" cellspacing="2" cellpadding="2" align="center">
<tr>
<td>
<%ors.ShowPage()%>
</td>
</tr>
</table>
<table width="760" border="0" align="center" cellpadding="2" cellspacing="2">
<tr>
<td align="center">
<%endtime=timer()%>
本页面执行时间:<%=FormatNumber((endtime-startime)*1000,3)%>毫秒</td>
</tr>
</table>
</body>
</html>
<%
iRs=NULL
ors=NULL
Set ors=NoThing
%>
白云岛资源网 Design By www.pvray.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
白云岛资源网 Design By www.pvray.com
暂无评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?