快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

ASP分页的一个类

asp分页的一个类,

在50,000条记录下测试过,速度比ado的那个要快多了

<%

\\\'************************************************************************************
\\\'详细用法
\\\'Set conn=Server.CreateObject("ADODB.Connection")
\\\'conn.open "DRIVER={SQL Server};SERVER=(local);UID=sa;PWD=1230;DATABASE=Music"
\\\'set rs = mp.Execute("select * from MusicList",conn,29)
\\\'while not rs.eof
\\\' response.write rs2("MusicName")&"<br>"
\\\' rs2.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&"页&nbsp"
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 "&nbsp"
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>&nbsp"
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

%>
返回类别: 教程
上一教程: ASP网页访问权的控制
下一教程: 使用INSTALLSHIELD制作ASP安装程序(1)

您可以阅读与"ASP分页的一个类"相关的教程:
· FLASH和ASP分页的一点心得
· 在ASP中通过GETROWS实现数据库记录分页的一段代码
· ASP中通过GETROWS实现数据库记录分页的一段代码
· 一个高效的数据分页的存储过程
· 一个简朴的ASP分页程序
    微笑服务 优质保证 索取样品