当前位置: 首页 > 图文教程 > 网络编程 > ASP > 创建一个ASP通用分页类(一)

ASP
ASP基础讲座(下)
解决IIS5 HTTP500内部错误
ASP 3.0高级编程(四十六)
ASP 3.0高级编程(四十五)
ASP 3.0高级编程(四十四)
ASP 3.0高级编程(四十三)
ASP 3.0高级编程(四十二)
ASP 3.0高级编程(四十一)
ASP 3.0高级编程(三十九)
ASP 3.0高级编程(三十八)
ASP 3.0高级编程(三十七)
ASP 3.0高级编程(三十六)
ASP 3.0高级编程(三十五)
ASP 3.0高级编程(三十四)
ASP 3.0高级编程(三十三)
ASP 3.0高级编程(三十二)
ASP 3.0高级编程(三十一)
ASP错误代码说明
jscript错误代码及相应解释大全
ASP错误处理

创建一个ASP通用分页类(一)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 95 ::
收藏到网摘: n/a

 从开始学习到使用ASP到现在也写了不少程序了,最令人头痛的是写数据分页,每次都是由于几个变量名或几个参数的不同,因而需要每次都写哪一段冗长而又繁杂的分页代码,代码长了使得程序的可读性变差,容易出差,调试半天也找不出错在哪里,所以慢慢的我开始使用一些网上的提供的分页函数或分页类。的确省事不少,但是通常的函数和类的做法都是就数据显示部分也封装了起来,每次为了达到自己需要的显求效果要去改动函数或者类的本身,所以使用起来也不是怎么方便,自己写的分页改起来已经够复杂了,更不要说别人的了。

所以趁昨天有空自己写了一个分页的类,自我感觉良好(不要用鸡蛋砸我),在这里和大家分享一下自己的经验(谈不上经验,感想吧)。在这里我也不想说分页的原理了,反正大家都懂,要我往深入的谈我也不会。呵呵。

一、创建分页类的目标
在写之前,我曾想过,我究竟要写怎么样一个类,回想起以前写分页过程的时候,最烦的莫过于每次都要写哪一段复杂的分页代码,最大的烦恼每次都是仅仅几个变量名的不同。所以第一个要实现的就是要把这个封装起来,第二个就是要把分页的导航条也封装起来,第三个,不习惯哪些把数据显示部分也封装起来的方法,这不是方便编程,对与哪些对显示效果每次都不同的用户来说,比自己写分页还要麻烦。所以我的目地就是对RecordSet进行一些简单的封装。

二、创建过程
所以我写的第一个属性,就是返一个经过处理的RecordSe

Public Property Get GetRs()
  Set XD_Rs=Server.createobject("adodb.recordset")
  XD_Rs.PageSize=PageSize
  XD_Rs.Open XD_SQL,XD_Conn,1,1
  If not(XD_Rs.eof and XD_RS.BOF) Then
  If int_curpage>XD_RS.PageCount Then
int_curpage=XD_RS.PageCount
  End If
  XD_Rs.AbsolutePage=int_curpage
  End If
  Set GetRs=XD_RS
End Property

  这个属性的作用是更据指定RecordSet 的当前面,并到指针指向当前页的第一条记录,这个应该就是整个类的完成分页的核心了,当然,其中的一些参数是靠其它的属性来获取,所以这里顺便介绍一个这个类所要的基本参数

=============================================
'GetConn 得到数据库连接
'
'=============================================
Public Property Let GetConn(obj_Conn)
  Set XD_Conn=obj_Conn
End Property

'=============================================
'GetSQL 得到查询语句
'
'==============================================
Public Property Let GetSQL(str_sql)
  XD_SQL=str_sql
End Property

'===============================================
'PageSize 属性
'设置每一页的分页大小
'===============================================
Public Property Let PageSize(int_PageSize)
  If IsNumeric(Int_Pagesize) Then
  XD_PageSize=CLng(int_PageSize)
  Else
  str_error=str_error & "PageSize的参数不正确"
  ShowError()
  End If
End Property

Public Property Get PageSize
  If XD_PageSize="" or (not(IsNumeric(XD_PageSize))) Then
  PageSize=10
  Else
  PageSize=XD_PageSize
  End If
End Property


以上几个是在使用类的过程必需要指定的参数,曾经我在写属性的时候对每个传入的参数加上IsObject(obj_conn)等判断,为的是类的健壮,但是后来想来想去,这个对与ASP来说没有必要,不加还能加快点速度,至于为什么这样,我想各位在使用过程中也会发现,加还不如不加。这也是我经过了思想斗争以后才去掉了,只保留了一些必要的验证。
一个参数就是当前页的获得,在程序中我用int_curpage来标识,这个的话放在类的创建过程中获得在好也没有了

'========================
  '设定一些参数的黙认值
  '========================
  XD_PageSize=10 '设定分页的默认值为10
  '========================
  '获取当前面的值
  '========================
  If request("page")="" Then
  int_curpage=1
  ElseIf not(IsNumeric(request("page"))) Then
  int_curpage=1
  ElseIf CInt(Trim(request("page")))<1 Then
  int_curpage=1
  Else
  Int_curpage=CInt(Trim(request("page")))
  End If 
End Sub


到这里这个类分的功能基本已经