ASP通用分页类
一、类的属性、方法
这是一个ASP通用分页类。你可以用它方便的给记录集分页,当然在网上有许多的分页类和分页函数。本分页主要有Conn、SQL、URL、FieldList、PageSize、Template、Init、Show、Close等属性和方法。
1.Conn属性 :用来获取一个已创建的Connection对象。
2.SQL属性 :根据传入的SQL语句,自动创建RecordSet对象
3.PageSize属性 :设置第页的记录条数
4.FieldList属性 :如果需要显示库中的数据,一定要设置此属性。它是用来获取需要显示的正确的字段名。
5.URL属性 :设置分页条中链接的文件地址。
6.Template属性 :设置分页文件的模版。
7.Init过程 :分页类初始化数据。
8.Show过程 :显示数据。
9.Close过程 :分页类结束
全部代码由此下载
二、类的源代码(inc_clsPage.asp)
<%
'/************************************************
'* *
'* Name : Asp pagnation class *
'* Author : cjj *
'* Version : V2.8 *
'* Time : 2004-01-16 *
'* Comefrom: http://www.blueidea.com/ *
'* HomePage: None (Maybe Soon) *
'* Notice : You can use and modify it freely, *
'* BUT PLEASE HOLD THIS ITEM. *
'* If you modify it that i hope you *
'* can send a mail for me. *
'* *
'************************************************/
'#########声明变量#########
'定义链接的显示类型
Const SW_intShowChinese = 0 '汉字,如"上一页、下一页"
Const SW_intShowEnglish = 1 '英文,如"Back、Next"
Const SW_intShowCharacter = 2 '特殊字符
'定义数据的显示类型
Const SW_intHorizontalView = 0 '横排
Const SW_intVerticalView = 1 '竖排
'线的显示类型
Const SW_intShowBigBorder = 2 '粗线
Const SW_intShowSmallBorder = 1 '细线
Const SW_intShowNoBorder = 0 '无线
'标题栏线的显示类型
Const SW_intTleSmallBorder = 1 '细线
Const SW_intTleNoBorder = 0 '无线
'显示分页信息的位置
Const SW_intPageInNone = 0 '不显示分页条
Const SW_intPageInTop = 1 '在顶部显示
Const SW_intPageInBottom = 2 '在底部显示
Const SW_intPageInAll = 3 '在顶、底部显示
'显示的页数的数字个数
Const SW_intShowPages = 10
'SWPage Class
Private SW_blnIsHaveRS,SW_strFields,SW_blnInConn,SW_intShowPagePos,SW_strShowWidth
'#########初始化变量##########
SW_blnIsHaveRS = false '设置记录集获取标志为Fasle,就是无记录集状态
SW_strShowWidth = "90%" '默认的显示宽度为90%
SW_strFields = ""
SW_blnInConn = true '由内部创建Connection,如果设为False则由外部创建
SW_intShowPagePos = SW_intPageInAll
'*****************************************
' 类型: 类
' 目的: 给记录集分页
'*****************************************
Class SWPage
'声明类私有变量
Private SW_objRS,SW_objConn
Private SW_strSQL,SW_strURL,SW_strError,SW_strFormAction,SW_strHeadJS,SW_strFootJS
Private SW_intPageSize,SW_intTleBDType,SW_intShowPageType,SW_intShowType
Private SW_lngTotalPage,SW_lngTotalRecord,SW_lngPageNo
Private SW_aryFldName,SW_aryFldNote,SW_aryFldWidth,SW_aryFldAlign,SW_aryFldLink
Private SW_blnInit,SW_blnOpenRS,SW_blnConn,SW_blnPageSize,SW_blnFieldList,SW_blnGetURL,
SW_blnShowType,SW_blnShowPageType,SW_blnTemplate
'*****************************************
' 类型: 属性
' 目的: 根据获取的信息,创建数据库连接
' 输入: a_strConn:数据类型字符串
' 返回: 无
'*****************************************
Public Property Let Conn(a_strConn)
Dim strError
SW_blnConn = false
Set SW_objConn = CreateObject("Adodb.Connection")
On Error Resume Next
SW_objConn.Open a_strConn
If Err.Number <> 0 Then strError = strError & "<br>创建Connection对象失败"
On Error Goto 0
If Trim(strError)="" Then
SW_blnConn = true
Else
SW_strError = SW_strError & " <tr bgcolor=""#336699"" height=""28""><td><font color=""#FFFFFF"">Conn属性:</font></td></tr>" & vbcrlf
SW_strError = SW_strError & " <tr bgcolor=""#ffffff""><td>" & strError & "</td></tr>" & vbcrlf
End If
End Property
'*****************************************
' 类型: 属性
' 目的: 设定或显示SQL语句。
' 输入: a_strSQL: SQL语句。
' 返回: SQL语句。
'*****************************************
Public Property Let SQL(a_strSQL)
Dim strError
SW_blnOpenRS = false
SW_strSQL = a_strSQL
'创建RecordSet对象
Set SW_objRS = CreateObject("adodb.RecordSet")
On Error Resume Next
SW_objRS.Open SW_strSQL,SW_objConn,1,1
If Err.Number <> 0 Then strError = "<br>记录集打开失败"
On Error Goto 0
If Trim(strError)="" Then
SW_blnOpenRS = true
Else
SW_strError = SW_strError & " <tr bgcolor=""#336699"" height=""28""><td><font color=""#FFFFFF"">SQL属性:</font></td></tr>" & vbcrlf
SW_strError = SW_strError & " <tr bgcolor=""#ffffff""><td>" & strError & "</td></tr>" & vbcrlf
End If
End Property
'*****************************************
' 类型: 属性
' 目的: 设置需要显示的数据的字段名
' 输入: a_strFldName:字段名字符串,多个字段之间以逗号分隔
' 返回: 无
'*****************************************
Public Property Let FieldList(a_strFldName)
Dim strError
SW_blnFieldList = false
If Trim(a_strFldName) <> "" Then
SW_aryFldName = Split(LCase(a_strFldName),",")
Else
strError = strError & "<br>你必须设置需要显示的字段名,否则无法显示数据"
End If
If Trim(strError)="" Then
SW_blnFieldList = true
Else
SW_strError = SW_strError & " <tr bgcolor=""#336699"" height=""28""><td><font color=""#FFFFFF"">FieldList属性:</font></td></tr>" & vbcrlf
SW_strError = SW_strError & " <tr bgcolor=""#ffffff""><td>" & strError & "</td></tr>" & vbcrlf
End If
End Property
'*****************************************
' 类型: 属性
' 目的: 设定或显示每页的记录数。
' 输入: a_intPageSize: 每页显示的记录数。
' 返回: 每页显示的记录数。
'*****************************************
Public Property Let PageSize(a_intPageSize)
Dim strError
'PageSize获取失败标志
SW_blnPageSize = false
If Trim(a_intPageSize) = "" OR (Not(IsNumeric(a_intPageSize))) Then
strError = strError & "<br>非法的pagesize"
Else
If (a_intPageSize <= 2147483647 And a_intPageSize>=-2147483648) Then
SW_intPageSize = CLng(a_intPageSize)
Else
strError = strError & "<br>PageSize溢出"
End If
If (SW_intPageSize<=0) Then
strError = strError & "<br>PageSize只能是正整数"
End If
End If
If Trim(strError)="" Then
SW_blnPageSize = True
Else
SW_strError = SW_strError & " <tr bgcolor=""#336699"" height=""28""><td><font color=""#FFFFFF"">PageSize属性:</font></td></tr>" & vbcrlf
SW_strError = SW_strError & " <tr bgcolor=""#ffffff""><td>" & strError & "</td></tr>" & vbcrlf
End If
End Property
'*****************************************
' 类型: 属性
' 目的: 设定分页文件显示模板信息。
' 输入: a_strTemplate: 模板描述。
' 返回: 无。
'*****************************************
Public Property Let Template(a_strTemplate)
Dim aryTemplate,i,j,strError,strTemp,intItem,aryTemp,aryTemp1
SW_blnTemplate = false
aryTemplate = Split(Trim(LCase(a_strTemplate)),"+")
intItem = UBound(aryTemplate)
If intItem < 4 Then strError = "<br>此属性是必选项"
If intItem < 4 Then
'获取文件头
strTemp = TriM(aryTemplate(0))
If strcomp(Left(strTemp,6),"[file=")= 0 Then
SW_strHeadJS = "<script src=""" & Mid(strTemp,7,Len(strTemp)-7) & """></script>"
Else
SW_strHeadJS = Mid(strTemp,7,Len(strTemp)-7)
End If
'获取文件尾
strTemp = Trim(aryTemplate(3))
If strComp(Left(strTemp,6),"[file=") = 0 Then
SW_strFootJS = "<script src=""" & Mid(strTemp,7,Len(strTemp)-7) & """></script>"
Else
SW_strFootJS = Mid(strTemp,7,Len(strTemp)-7)
End If
'获取分页模版
aryTemp = Split(aryTemplate(1),",")
If aryTemp(0) <> "" Then strTemp = Replace(aryTemp(0),"[page=","")
If IsNumeric(strTemp) Then strTemp = CInt(strTemp)
If strTemp <> SW_intPageInNone Then
If IsNumeric(strTemp) Then strTemp = CInt(strTemp)