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

ASP
深入研究Application和Session对象(2)
深入研究Application和Session对象(3)
开始 .Net的旅程(一)
开始 .Net的旅程(二)
手把手教你使用VB来创建ASP组件(1)
手把手教你使用VB来创建ASP组件(2)
手把手教你使用VB来创建ASP组件(3)
手把手教你使用VB来创建ASP组件(4)
手把手教你使用VB来创建ASP组件(5)
手把手教你使用VB来创建ASP组件(6)
手把手教你使用VB来创建ASP组件(7)
手把手教你使用Java来编写ASP组件(1)
手把手教你使用Java来编写ASP组件(2)
手把手教你使用Java来编写ASP组件(3)
手把手教你使用Java来编写ASP组件(4)
手把手教你使用Java来编写ASP组件(5)
手把手教你使用Java来编写ASP组件(6)
ASP 3.0高级编程(二十四)
ASP 3.0高级编程(二十五)
ASP 3.0高级编程(二十六)

ASP 中的 asp分页的一个类


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 184 ::
收藏到网摘: 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
%>