网站首页 手机版
 注册 登录
您现在的位置: 畅无忧设计 >> 网络编程 >> ASP教程 >> 正文
最新文章
· FSO 组件asp生成html静态页面碰到缓存
· asp实现长文章自动分页插件
· 在ASP中访问和更新Cookies集合
· ASP错误提示大全
· 学习ASP的几个观点
· ASP用两级联动下拉列表来显示大类和小
· ASP取当前页面地址和参数
· ASP删除记录的同时删除相关图片
· asp将查询结果导出到excel
· ASP批量导入Excel到Access或者Sql Se
热门文章
 化境ASP无组件上传类 - upload_5xs
 一个获取ACCESS数据库表名以及表名
 asp将查询结果导出到excel
 艾恩ASP无组件上传修改版
 ASP批量导入Excel到Access或者Sql 
 ASP读取数据库的Flash+JS图片切换特
 ASP用两级联动下拉列表来显示大类和
 ASP+JS实现网页歌曲连播、点播功能
 使用ASP重启服务器
 asp批量替换access数据库中指定字段
相关文章
美化过类似动网的ASP分页类
ASP分页类
来源:蓝色理想 更新时间:2011/11/15 23:42:24 阅读次数:
字体:[ ] 我要投稿

<%
Class YY_PageCla
Private APC_PageCount,APC_Conn,APC_Rs,APC_SQL,APC_PageSize,APC_SUrl,INT_CurPage,INT_TotalPage,INT_TotalRecord,STR_Url,BTN_First,BTN_Prev,BTN_Next,BTN_Last,YY_COLOR

'==================================================================
'Class_Initialize:初始化当前页的值
'==================================================================
Private Sub Class_Initialize
APC_PageSize=10  '设定分页的默认值为10
BTN_First="首页"  '定义第一页按钮显示样式
BTN_Prev="上一页"  '定义前一页按钮显示样式
BTN_Next="下一页"  '定义下一页按钮显示样式
BTN_Last="尾页"  '定义最后一页按钮显示样式
YY_COLOR="#FF0000"
'========================
'以下过程获取当前面的值
'========================
If Request("page")="" Then
  INT_CurPage=1
ElseIf Not(IsNumeric(Request("page"))) Then
  INT_CurPage=1
ElseIf Fix(Trim(Request("page")))<1 Then
  INT_CurPage=1
Else
  INT_CurPage=Fix(Trim(Request("page")))
End If
End Sub

Public Property Let BTN(BTN_BTN)
BBB=split(BTN_BTN,",")
if ubound(BBB)=3 then
BTN_First=BBB(0)
BTN_Prev=BBB(1)
BTN_Next=BBB(2)
BTN_Last=BBB(3)
end if
End Property

'=================================================================
'COLOR:设置当前页的颜色
'=================================================================
Public Property Let COLOR(INT_COLOR)
YY_COLOR=INT_COLOR
End Property

Public Property Get COLOR
COLOR=YY_COLOR
End Property

'=================================================================
'PageSize:设置每页显示数量
'=================================================================
Public Property Let PageSize(INT_PageSize)
If IsNumeric(INT_PageSize) Then
  APC_PageSize=Fix(INT_PageSize)
Else
  STR_Error=STR_Error & "PageSize(每页显示数量)的参数不正确!"
  ShowError()
End If
End Property

Public Property Get PageSize
If APC_PageSize="" or (Not(IsNumeric(APC_PageSize))) Then
  PageSize=10    
Else
  PageSize=APC_PageSize
End If
End Property

'=================================================================
'GetRS:返回分页后的记录集
'=================================================================
Public Property Get GetRs()
Set APC_Rs=Server.createobject("adodb.recordset")
APC_Rs.PageSize=PageSize
APC_Rs.Open APC_SQL,APC_Conn,1,1
If Not(APC_Rs.eof and APC_RS.BOF) Then
  If INT_CurPage>APC_RS.PageCount Then
   INT_CurPage=APC_RS.PageCount
  End If
  APC_Rs.AbsolutePage=INT_CurPage
End If
Set GetRs=APC_RS
End Property

'================================================================
'GetConn:得到数据库连接
'================================================================
Public Property Let GetConn(OBJ_Conn)
Set APC_Conn=OBJ_Conn
End Property

'================================================================
'GetSQL:得到查询语句
'================================================================
Public Property Let GetSQL(STR_Sql)
APC_SQL=STR_Sql
End Property


'====================================================================
'ShowPage:创建分页导航条,有首页、前一页、下一页、末页、还有数字导航
'====================================================================
Public Sub ShowPage()
Dim STR_Tmp
APC_SUrl = GetUrl()
INT_TotalRecord=APC_RS.RecordCount
If INT_TotalRecord<=0 Then
  STR_Error=STR_Error & "总记录数为零,请输入数据"
  Call ShowError()
End If
If INT_TotalRecord="" then
     INT_TotalPage=1
Else
  If INT_TotalRecord mod PageSize =0 Then
   INT_TotalPage = Fix(INT_TotalRecord / APC_PageSize)
  Else
   INT_TotalPage = Fix(INT_TotalRecord / APC_PageSize)+1
  End If
End If
If INT_CurPage>INT_TotalPage Then
  INT_CurPage=INT_TotalPage
End If

'==================================================================
'显示分页信息,各个模块根据自己要求更改显求位置
'==================================================================
response.write ""
STR_Tmp=ShowFirstPrv
response.write STR_Tmp
STR_Tmp=ShowNumBtn
response.write STR_Tmp
STR_Tmp=ShowNextLast
response.write STR_Tmp
STR_Tmp=ShowPageInfo
response.write STR_Tmp
response.write ""
End Sub

'====================================================================
'ShowFirstPrv:显示首页、前一页
'====================================================================
Private Function ShowFirstPrv()
Dim STR_Tmp,INT_PrvPage
If INT_CurPage=1 Then
  STR_Tmp=BTN_First&" "&BTN_Prev
Else
  INT_PrvPage=INT_CurPage-1
  STR_Tmp="<a href="""&APC_SUrl & "1" & """>" & BTN_First&"</a> <a href=""" & APC_SUrl & CStr(INT_PrvPage) & """>" & BTN_Prev&"</a>"
End If
ShowFirstPrv=STR_Tmp
End Function

'====================================================================
'ShowNextLast:显示下一页、末页
'====================================================================
Private Function ShowNextLast()
Dim STR_Tmp,INT_Nextpage
If INT_CurPage>=INT_TotalPage Then
  STR_Tmp=BTN_Next & " " & BTN_Last
Else
  INT_NextPage=INT_CurPage+1
  STR_Tmp="<a href=""" & APC_SUrl & CStr(INT_nextpage) & """>" & BTN_Next&"</a> <a href="""& APC_SUrl & CStr(INT_TotalPage) & """>" &  BTN_Last&"</a>"
End If
ShowNextLast=STR_Tmp
End Function

'====================================================================
'ShowNumBtn:显示数字导航
'====================================================================
Private Function ShowNumBtn()
Dim i,STR_Tmp,j
if INT_TotalPage<10 or INT_CurPage<6 then
if INT_TotalPage<10 then
        j=INT_CurPage
else
        j=10
end if
For i=1 to j
if i=INT_CurPage then
  STR_Tmp=STR_Tmp & " <font color="""&color&"""><b>"&i&"</b></font> "
else
  STR_Tmp=STR_Tmp & " <a href=""" & APC_SUrl & CStr(i) & """>"&i&"</a> "
end if
Next
elseif INT_CurPage+5>INT_TotalPage then
For i=INT_CurPage-5 to INT_TotalPage
if i=INT_CurPage then
  STR_Tmp=STR_Tmp & " <font color="""&color&"""><b>"&i&"</b></font> "
else
  STR_Tmp=STR_Tmp & " <a href=""" & APC_SUrl & CStr(i) & """>"&i&"</a> "
end if
Next
else
For i=INT_CurPage-5 to INT_CurPage+5
if i=INT_CurPage then
  STR_Tmp=STR_Tmp & " <font color="""&color&"""><b>"&i&"</b></font> "
else
  STR_Tmp=STR_Tmp & " <a href=""" & APC_SUrl & CStr(i) & """>"&i&"</a> "
end if
Next
end if
ShowNumBtn=STR_Tmp
End Function

'====================================================================
'ShowPageInfo:分页信息,根据要求自行修改
'====================================================================
Private Function ShowPageInfo()
Dim STR_Tmp
STR_Tmp=" 页次:"&INT_CurPage&"/"&INT_TotalPage&"页 共"&INT_TotalRecord&"条记录 "&APC_PageSize&"条/每页 "
ShowPageInfo=STR_Tmp
End Function
'==================================================================
'GetURL:得到当前的URL,根据URL参数不同,获取不同的结果
'==================================================================
Private Function GetURL()
Dim strurl,STR_Url,i,j,search_str,result_url
search_str="page="
strurl=Request.ServerVariables("URL")
Strurl=split(strurl,"/")
i=UBound(strurl,1)
STR_Url=strurl(i)'得到当前页文件名
STR_params=Trim(Request.ServerVariables("QUERY_STRING"))
If STR_params="" Then
  result_url=STR_Url & "?page="
Else
  If InstrRev(STR_params,search_str)=0 Then
   result_url=STR_Url & "?" & STR_params &"&page="
  Else
   j=InstrRev(STR_params,search_str)-2
   If j=-1 Then
    result_url=STR_Url & "?page="
   Else
    STR_params=Left(STR_params,j)
    result_url=STR_Url & "?" & STR_params &"&page="
   End If
  End If
End If
GetURL=result_url
End Function

'====================================================================
' 设置 Terminate 事件。
'====================================================================
Private Sub Class_Terminate 
APC_RS.close
Set APC_RS=nothing
End Sub
'====================================================================
'ShowError:错误提示
'====================================================================
Private Sub ShowError()
If STR_Error <> "" Then
  Response.Write("" & STR_Error & "")
  Response.End
End If
End Sub
End class
%>

实例:

<%
ssssss=Timer
'====================================================================
'下面是类运用的实例
'====================================================================
set conn = server.CreateObject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq=" & server.Mappath("mdb.mdb")

'创建对象
Set Pages=New YY_PageCla
'得到数据库连接
Pages.GetConn=conn
'Sql语句
Pages.GetSql="select * from [content] order by id asc"
'设置每一页的记录条数据为10条
Pages.PageSize=10
'设置当前页的颜色,默认为红色
Pages.COLOR="#FF00FF"
'设置文字导航,用“,”分隔,错误即用默认的显示
Pages.Btn="首页,上一页,下一页,尾页"
'返回RecordSet
set Rs=Pages.GetRs()
'显示分页信息,可以调用多次
Pages.ShowPage()

'显示数据
Response.Write("<br/>")
for i=1 to Pages.PageSize
'这里就可以自定义显示方式了
    if not rs.eof then
        response.write left(rs("content"),20) & "<br/>"
        rs.movenext
    else
         exit for
    end if
next

response.write "花费时间:"&CStr(Int(((Timer - ssssss) * 10000) + 0.5) / 10)&"毫秒"
%>

测试:access百万级数据量要花5秒时间

测试图:

 

  • 上一篇文章:
  • 下一篇文章:
  • 关于我们 - 联系我们 - 广告服务 - 在线投稿 - 友情链接 - 网站地图 - 版权声明
    CopyRight 2008-2010, CWYDESIGN.COM - 畅无忧设计, Inc. All Rights Reserved
    滇ICP备09005765号