Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->编程语言 ->ASP ->正文

支持多风格变换的ASP分页类

来源:Linuxdby.com 作者:Webmaster 时间:2007-04-23 点击: [收藏] [投稿]

这个分页使用的是0游标,也就是Rs.Open Sql,Conn,0,1。但是感觉也快不了多少,10万条数据的分页时间300多豪秒之间。
  <%
  Class Page
  Private CurrPage
  Private PageN
  Private UrlStr
  Private TempStr
  Private ErrInfo
  Private IsErr
  Private TotalRecord
  Private TotalPage
  Public  PageRs
  Private TempA(11)
  Private TempB(8)
  '------------------------------------------------------------
  Private Sub Class_Initialize()
   CurrPage=1'//默认显示当前页为第一页
   PageN=10'//默认每页显示10条数据
   UrlStr="#"
   TempStr=""
   ErrInfo="ErrInfo:"
   IsErr=False
  End Sub
  Private Sub Class_Terminate()
   If IsObject(PageRs) Then
    PageRs.Close
    Set PageRs=Nothing
   End If
   Erase TempA
   Erase TempB
  End Sub
  '----------------------------------------------------------
  '//获取当前页码
  Public Property Let CurrentPage(Val)


   CurrPage=Val
  End Property
  Public Property Get CurrentPage()
   CurrentPage=CurrPage
  End Property
  '//获取每页显示条数
  Public Property Let PageNum(Val)
   PageN=Val
  End Property
  Public Property Get PageNum()
   PageNum=PageN
  End Property
  '//获取URL
  Public Property Let Url(Val)
   UrlStr=Val
  End Property
  Public Property Get Url()
   Url=UrlStr
  End Property
  '//获取模板
  Public Property Let Temp(Val)
   TempStr=Val
  End Property
  Public Property Get Temp()
   Temp=TempStr
  End Property
  '------------------------------------------------------------
Public Sub Exec(Sql,ConnObj)
   On Error Resume Next
   Set PageRs=Server.CreateObject("ADODB.RecordSet")
   PageRs.CursorLocation = 3 '使用客户端游标,可以使效率提高
   PageRs.PageSize = PageN '定义分页记录集每页显示记录数
   PageRs.Open Sql,ConnObj,0,1
   If Err.Number<>0 Then
   Err.Clear
  PageRs.Close
  Set PageRs=Nothing
   ErrInfo=ErrInfo&"建立或打开记录集错误..."
  IsErr=True
  Response.Write ErrInfo
  Response.End
   End If
   TotalRecord=PageRs.RecordCount'//如果为0呢?
   If TotalRecord>=1 Then
   '----------------------------------------------------------------------------开始
   '//计算总页数,Ps,为什么不用PageRs.PageCount呢?
   'If TotalRecord Mod PageN=0 Then
   'TotalPage=PageRs.RecordCount\PageN
   'Else
   'TotalPage=PageRs.RecordCount\PageN
  'TotalPage=Abs(Int(TotalPage))
   'End If
  TotalPage=PageRs.PageCount
   '//处理当前接收页码,默认的为1,所以不是数字类型的都会为1
   If IsNumeric(CurrPage) Then
   CurrPage=CLNg(CurrPage)
   If CurrPage<1 Then CurrPage=1
   If CurrPage>TotalPage Then CurrPage=TotalPage
   Else
    '//Dim M:M="":IsNumeric(M)=True
   CurrPage=1
   End If
   '---------------------------------------------------------------------------结束


   Else
   TotalPage=0
   CurrPage=1
   End If
   '//
   PageRs.AbsolutePage = CurrPage 'absolutepage:设置指针指向某页开头
   PageRs.PageSize=PageN
  End Sub
  Private Sub Init()
   'Private TempA(10)
   TempA(1)="{N1}" '//首页
   TempA(2)="{N2}"'//上一页
   TempA(3)="{N3}"'//下一页
   TempA(4)="{N4}"'//尾页
   TempA(5)="{N5}"'//当前页码
   TempA(6)="{N6}"'//页码总数
   TempA(7)="{N7}"'//每页条数
   TempA(8)="{N8}"'//文章总数
   TempA(9)="{L}"'//循环标签开始
   TempA(10)="{N}"'//循环内单标签:页码
   TempA(11)="{L

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:ASP实现将汉字转换成拼音的函数   下一篇:ASP无组件上载,带进度条,多文件上载。。

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号