当前位置: 首页 > 图文教程 > 网络编程 > ASP > asp分页的一个类

ASP
ASP调用ORACLE存储过程并返回结果集
用ASP实现网页BBS
关于Global.asa文件的深入研究与session变量失效提示的具体方法
简易ASP+注册系统
防护手册:如何防止ASP木马在服务器上运行
用Visual Basic实现多画面播放功能之二
如何增强ASP程序性能(1)
如何增强ASP程序性能(2)
如何增强ASP程序性能(3)
ASP备份数据库
二十八条改善 ASP 性能和外观的技巧
在Form域中Post大于100K的数据
如何使用ASP制作模似动态生长的表单?
Microsoft IIS 真的如此「不安全」吗?(1)
Microsoft IIS 真的如此「不安全」吗?(2)
Microsoft IIS 真的如此「不安全」吗?(3)
Microsoft IIS 真的如此「不安全」吗?(4)
Microsoft IIS 真的如此「不安全」吗?(5)
关于页面和代码分离
ServerVariables 对路径的操作

ASP 中的 asp分页的一个类


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 205 ::
收藏到网摘: n/a

asp分页的一个类
在50,000条记录下测试过,速度比ado的那个要快多了
<%
'************************************************************************************
'具体用法
Dim strDbPath
Dim connstr
Dim mp
Set mp = New MyPage
strDbPath = "fenye/db.mdb"
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
connstr = connstr & Server.MapPath(strDbPath)
Set conn = Server.CreateObject("Adodb.Connection")
conn.open connstr
set rs = mp.Execute("select * from table1",conn,29)
while not rs.eof
response.write rs("aaaa")&"<br>"
rs.MoveNext
wend
mp.pageDispaly()
'************************************************************************************
Class MyPage
private MyPage_Conn,MyPage_StrSql,MyPage_TotalStrSql,MyPage_RS,MyPage_TotalRS
private MyPage_PageSize
private MyPage_PageAbsolute,MyPage_PageTotal,MyPage_RecordTotal
private MyPage_Url
public property let conn(strConn)
set MyPage_Conn = strConn
end property
public property let PageSize(intPageSize)
MyPage_PageSize = Cint(intPageSize)
end property
public function PageExecute(strSql)
MyPage_PageAbsolute = MyPage_PageAbsoluteRequest()
MyPage_TotalStrSql = FormatMyPage_TotalStrSql(strSql)
set MyPage_TotalRS = MyPage_Conn.execute(MyPage_TotalStrSql)
MyPage_RecordTotal = MyPage_TotalRS("total")
MyPage_PageTotal = Cint(MyPage_RecordTotal/MyPage_PageSize)
MyPage_StrSql = FormatMyPage_StrSql(strSql)
set MyPage_RS = MyPage_Conn.execute(MyPage_StrSql)
dim i
i = 0
while not MyPage_RS.eof and i<(MyPage_PageAbsolute-1)*MyPage_PageSize
i = i + 1
MyPage_RS.MoveNext
wend
set PageExecute = MyPage_RS
end function
public function Execute(strSql,strConn,intPageSize)
conn = strConn
PageSize = intPageSize
set Execute = PageExecute(strSql)
end function
public function pageDispaly()
MyPage_Url = ReadMyPage_Url
firstPageTag = "<font face=webdings>9</font>" '|<<
LastPageTag = "<font face=webdings>:</font>" '>>|
previewPageTag = "<font face=webdings>7</font>" '<<
nextPageTag = "<font face=webdings>8</font>" '>>
dim strAnd
if instr(MyPage_Url,"?")=0 then
strAnd = "?"
else
strAnd = "&"
end if
response.write "<table width=100% border=0 cellspacing=0 cellpadding=0>"
response.write "<tr>"
response.write "<td align=left>"
response.write "页次:"&MyPage_PageAbsolute&"/"&MyPage_PageTotal&"页 "
response.write "主题数:"&MyPage_RecordTotal
response.write "</td>"
response.write "<td align=right>"
response.write "分页:"
if MyPage_PageAbsolute>10 then
response.write "<a href='"&MyPage_Url&strAnd&"MyPage_PageNo=1'>"&firstPageTag&"</a>"
response.write "<a href='"&MyPage_Url&strAnd&"MyPage_PageNo="&(MyPage_PageAbsolute-10)&"'>"&previewPageTag&"</a>"
else
response.write firstPageTag
response.write previewPageTag
end if
response.write " "
dim CurrentStartPage,i
i = 1
CurrentStartPage=(Cint(MyPage_PageAbsolute)\10)*10+1
if Cint(MyPage_PageAbsolute) mod 10=0 then
CurrentStartPage = CurrentStartPage - 10
end if
while i<11 and CurrentStartPage<MyPage_PageTotal+1
if CurrentStartPage < 10 then
FormatCurrentStartPage = "0" & CurrentStartPage
else
FormatCurrentStartPage = CurrentStartPage
end if
response.write "<a href='"&MyPage_Url&strAnd&"MyPage_PageNo="&CurrentStartPage&"'>"&FormatCurrentStartPage&"</a> "
i = i + 1
CurrentStartPage = CurrentStartPage + 1
wend
if MyPage_PageAbsolute<(MyPage_PageTotal-10) then
response.write "<a href='"&MyPage_Url&strAnd&"MyPage_PageNo="&(MyPage_PageAbsolute+10)&"'>"&nextPageTag&"</a>"
response.write "<a href='"&MyPage_Url&strAnd&"MyPage_PageNo="&MyPage_PageTotal&"'>"&LastPageTag&"</a>"
else
response.write nextPageTag
response.write LastPageTag
end if
response.write ""
response.write "</td>"
response.write "</tr>"
response.write "</table>"
end function
public function GetPageNo()
GetPageNo = cint(MyPage_PageAbsolute)
end function
public function GetPageCount()
GetPageCount = cint(MyPage_PageTotal)
end function
public function GetPageNoName()
GetPageNoName = "MyPage_PageNo"
end function
public function GetPageSize()
GetPageSize = MyPage_PageSize
end function
public function GetRecordTotal()
GetRecordTotal = MyPage_RecordTotal
end function

private function FormatMyPage_TotalStrSql(strSql)
FormatMyPage_TotalStrSql = "select count(*) as total "
FormatMyPage_TotalStrSql = FormatMyPage_TotalStrSql & Mid(strSql,instr(strSql,"from"))
FormatMyPage_TotalStrSql = Mid(FormatMyPage_TotalStrSql,1,instr(FormatMyPage_TotalStrSql&"order by","order by")-1)
end function
private function FormatMyPage_StrSql(strSql)
FormatMyPage_StrSql = replace(strSql,"select","select top "&(MyPage_PageAbsolute*Cint(MyPage_PageSize)))
end function
private function MyPage_PageAbsoluteRequest()
if request("MyPage_PageNo")="" then
MyPage_PageAbsoluteRequest = 1
else
if IsNumeric(request("MyPage_PageNo")) then
MyPage_PageAbsoluteRequest = request("MyPage_PageNo")
else
MyPage_PageAbsoluteRequest = 1
end if
end if
end function
private function ReadMyPage_Url()
ReadMyPage_Url = Request.ServerVariables("URL")
if Request.QueryString<>"" then
ReadMyPage_Url = ReadMyPage_Url & "?" & Request.QueryString
end if
set re = new RegExp
re.Pattern = "[&|?]MyPage_PageNo=\d+?"
re.IgnoreCase = true
re.multiLine = true
re.global = true
Set Matches = re.Execute(ReadMyPage_Url)
For Each Match in Matches
tmpMatch = Match.Value
ReadMyPage_Url = replace(ReadMyPage_Url,tmpMatch,"")
next
end function
end Class
%>