📄 cls.page.asp
字号:
<%
Class Cls_PageView
Private sbooInitState
Private sstrCookiesName
Private sstrPageUrl
Private sstrPageVar
Private sstrTableName
Private sstrFieldsList
Private sstrCondiction
Private sstrOrderList
Private sstrPrimaryKey
Private sintRefresh
Private sinAdmin
Private sintRecordCount
Private sintPageSize
Private sintPageNow
Private sintPageMax
Private sobjConn
Private sstrPageList
Private aUrl,sN
Private surl1,sU,ssurl
Private Sub Class_Initialize
Call ClearVars()
End Sub
Private Sub Class_Terminate()
Set sobjConn = nothing
End Sub
Public Sub ClearVars()
sbooInitState = False
sstrCookiesName = ""
sstrPageUrl = ""
sstrPageVar = "page"
sstrTableName = ""
sstrFieldsList = ""
sstrCondiction = ""
sstrOrderList = ""
sstrPrimaryKey = ""
sintRefresh = 0
sinAdmin = 0 '0支持伪静态,1不支持伪静态 ,2为支持自定义选项
sintRecordCount = 0
sintPageSize = 0
sintPageNow = 0
sintPageMax = 0
End Sub
Rem ## 保存记录数的 Cookies 变量
Public Property Let strCookiesName(Value)
sstrCookiesName = Value
End Property
Rem ## 转向地址
Public Property Let strPageUrl(Value)
sstrPageUrl = Value
End Property
Rem ## 表名
Public Property Let strTableName(Value)
sstrTableName = Value
End Property
Rem ## 字段列表
Public Property Let strFieldsList(Value)
sstrFieldsList = Value
End Property
Rem ## 查询条件
Public Property Let strCondiction(Value)
If Value <> "" Then
sstrCondiction = " WHERE " & Value
Else
sstrCondiction = ""
End If
End Property
Rem ## 排序字段, 如: [ID] ASC, [CreateDateTime] DESC
Public Property Let strOrderList(Value)
If Value <> "" Then
sstrOrderList = " ORDER BY " & Value
Else
sstrOrderList = ""
End If
End Property
Rem ## 用于统计记录数的字段
Public Property Let strPrimaryKey(Value)
sstrPrimaryKey = Value
End Property
Rem ## 每页显示的记录条数
Public Property Let intPageSize(Value)
sintPageSize = toNum(Value, 20)
End Property
Rem ## 数据库连接对象
Public Property Let objConn(Value)
Set sobjConn = Value
End Property
Rem ## 当前页
Public Property Let intPageNow(Value)
sintPageNow = toNum(Value, 1)
End Property
Rem ## 页面参数
Public Property Let strPageVar(Value)
sstrPageVar = Value
End Property
Rem ## 是否刷新. 1 为刷新, 其他值则不刷新
Public Property Let intRefresh(Value)
sintRefresh = toNum(Value, 0)
End Property
Rem ## 是否后台. 0 为不是, 1为是
Public Property Let inAdmin(Value)
sinAdmin = toNum(Value, 0)
End Property
Rem ## 获得当前页
Public Property Get intPageNow()
intPageNow = singPageNow
End Property
Rem ## 分页信息
Public Property Get strPageList()
strPageList = sstrPageList
End Property
Rem ## 取得记录集, 二维数组或字串, 在进行循环输出时必须用 IsArray() 判断
Public Property Get arrPage()
If Not sbooInitState Then
Exit Property
End If
Dim srs, ssql ,aTempUrl
ssql = "SELECT " & sstrFieldsList & _
" FROM " & sstrTableName & _
sstrCondiction & _
sstrOrderList
Set srs = Server.CreateObject("Adodb.RecordSet")
srs.open ssql, sobjConn, 1, 1
If Not(srs.eof or srs.bof) Then
srs.PageSize = sintPageSize
srs.AbsolutePage = sintPageNow
If Not(srs.eof or srs.bof) Then
arrPage = srs.getrows(sintPageSize)
Else
arrPage = ""
End If
Else
arrPage = ""
End If
srs.close
Set srs = nothing
End Property
Rem ## 初始化记录数
Private Sub InitRecordCount()
sintRecordCount = 0
If Not(sbooInitState) Then Exit Sub
sintTmp = toNum(sstrCookiesName, -1)
If ((sintTmp < 0) Or (sintRefresh = 1))Then
Dim ssql, srs
ssql = "SELECT COUNT(" & sstrPrimaryKey & ") FROM " & sstrTableName & sstrCondiction
Set srs = sobjConn.Execute(ssql)
If srs.eof or srs.bof Then
sintTmp = 0
Else
sintTmp = srs(0)
End If
sintRecordCount = sintTmp
Else
sintRecordCount = sintTmp
End If
End Sub
Rem ## 初始化分页信息
Private Sub InitPageInfo()
sstrPageList = ""
If Not(sbooInitState) Then Exit Sub
Dim surl
surl = sstrPageUrl
If Int(WR_Setting(9)) = 0 Then sinAdmin = 1
If sinAdmin = 2 Then If DB1 <> "" or DB2 <> "" or DB3 <> "" or DB4 <> "" or DB5 <> "" or DB6 <> "" or DB7 <> "" or DB8 <> "" or DB9 <> "" or DB10 <> "" Then sinAdmin = 1:surl = "" Else sinAdmin = 0
If surl = "" Then sinAdmin = 1
Select Case Int(sinAdmin)
Case 0
If surl <> "" Then surl = right(surl,len(surl)-len(WR_Setting(3)))
Case 1
Dim aTempUrl
If PageName = "" Or IsNUll(PageName) Then PageName = Request.ServerVariables("url")
If aTempUrl = "" Or IsNUll(aTempUrl) Then aTempUrl = Request.QueryString
aTempUrl = Split(aTempUrl,"&")
For sN = 0 To UBound(aTempUrl)
If aTempUrl(sN) <> "" and Instr(Ucase("&"&aTempUrl(sN)),"&PAGE=") = 0 Then
If aUrl = "" Then aUrl = aTempUrl(sN) Else aUrl = aUrl & "&" & aTempUrl(sN)
End If
Next
surl = aUrl
If surl <> "" Then surl = "?"&surl:surl = Replace(surl,"&&","&")
surl = PageName & surl
If Instr(1, surl, "?", 1) > 0 Then
surl = surl & "&" & sstrPageVar & "="
Else
surl = surl & "?" & sstrPageVar & "="
End If
End Select
If sintPageNow <= 0 Then sintPageNow = 1
If sintRecordCount mod sintPageSize = 0 Then
sintPageMax = sintRecordCount \ sintPageSize
Else
sintPageMax = sintRecordCount \ sintPageSize + 1
End If
If sintPageNow > sintPageMax Then sintPageNow = sintPageMax
sstrPageList = "<span class=Page>" & sintPageNow & "/" & sintPageMax & "页</span>"
If sintPageNow > 1 Then
sstrPageList = sstrPageList & "<a href='"&GetPageUrl(1,surl)&"'><span class=Page>首页</span></a>"
sstrPageList = sstrPageList & "<a href='"&GetPageUrl(sintPageNow-1,surl)& "'><span class=Page>上一页</span></a>"
For sN = sintPageNow-4 To sintPageNow-1
If sN > 0 Then
sstrPageList = sstrPageList & "<a href='"&GetPageUrl(sN,surl)& "'><span class=Page>" & sN & "</span></a>"
End If
Next
End If
If sintPageMax > 1 Then
sstrPageList = sstrPageList & "<span class=Page_1>" & sintPageNow & "</span>"
End If
If sintPageMax-sintPageNow > 0 Then
For sN = sintPageNow+1 To sintPageNow+5
If sN <= sintPageMax Then
sstrPageList = sstrPageList & "<a href='"&GetPageUrl(sN,surl)&"'><span class=Page>" & sN & "</span></a>"
End If
Next
sstrPageList = sstrPageList & "<a href='"&GetPageUrl(sintPageNow+1,surl)& "'><span class=Page>下一页</span></a>"
sstrPageList = sstrPageList & "<a href='"&GetPageUrl(sintPageMax,surl)& "'><span class=Page>尾页</span></a>"
End If
sstrPageList = "<div id=Page>"&sstrPageList&"<div id=clearboth></div></div>"
If sintRecordCount = 0 Then sstrPageList = ""
End Sub
Private function GetPageUrl(p,surl)
Select Case Int(sinAdmin)
Case 0
surl = Replace(surl,"/","")
surl1 = Split(surl,"_")
ssurl = ""
For sU=0 To UBound(surl1)
If ssurl = "" Then
ssurl = surl1(sU)
Else
If UBound(surl1) > 1 Then
If sU = 2 Then
ssurl = ssurl & "_" &p
Else
ssurl = ssurl & "_" &surl1(sU)
End IF
Else '礼品分页
ssurl = ssurl & "_" &p
End If
End If
Next
ssurl = WR_Setting(3)&ssurl&"/"
Case 1
ssurl = surl & p
End Select
ssurl = Replace(ssurl,"??","?")
GetPageUrl = ssurl
End function
Rem ## 长整数转换
Private function toNum(s, Default)
s = s & ""
If s <> "" And IsNumeric(s) Then
toNum = CLng(s)
Else
toNum = Default
End If
End function
Rem ## 类初始化
Public Sub InitClass()
sbooInitState = True
If Not(IsObject(sobjConn)) Then sbooInitState = False
Call InitRecordCount()
Call InitPageInfo()
End Sub
End Class
%>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -