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

ASP
一个ASP版的图片浏览管理器
无组件上传图片至SQLSERVER数据库
利用Jmail.Message发送邮件
用Web页面执行客户端程序
多图片上传到指定的目录并存到数据库
dreamweaverMX通用分页代码研究
下拉菜单输入,根据输入内容自动定位
中文的无组件文件上传ASP函数
一个利用adsi得到局域网信息的asp文件
根据需要动态include不同的文件
让自定义文件下载支持断点续传
用数组实现数据记录的批量录入方法
上传的进度条 实时反映上传情况
用ASP动态生成javascript的表单验证代码
ASP 编程中20个非常有用的例子
ASP生成Word文档的又一方法
用asp解析图片地址,并将其保存。
利用ASP的文件操作实现用户管理
创建 Visual Basic COM 组件在 ASP 中使用
调试 ASP 中使用的 Visual Basic COM 组件

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 108 ::
收藏到网摘: 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


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