精彩专题推荐:建站之入门课 建站之必修课 建站之关键课 网站价值所在 流量提高专题 css+div 标准 个人网站打造全过程
返回建站学首页
导航:
建站首页 | 网站设计 | 网站开发 | 网站运营 | 网页软件 | 建站指南 | 搜索优化 | 图像处理 | 视频教程 | 书籍教程 | 建站专题
当前位置:首页>网站开发>ASP教程>正文

asp分页的一个类


来源:我要学习网 时间:06-11-12 点击: 点击这里收藏本文
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 

%> 

  把此文章收藏到:          
广而告之
文章搜索
  • Google JZxue.Com

关于我们 | 联系我们 | 友情链接 | 网站地图
Copyright © 2005 - 2006 建站学 All rights reserved.