ASP高效分页类

<%
'================================================
' By Kangk.L
'Date    2006-04-07
'Program Name  Kangk PageAc
'Class Name   Cls_PageAc
'
'
'---------Property Let--------
'ListHtml   列表循环模板:字符型,HTML代码和替换标签<必需>
'     (替换标签说明:用","号分隔的每个字段名FieldStr前后加"$")
'Pages    当前页码:长整型,如果为空,则为0
'PageSize   每页列表数:长整型<必需>
'TableStr   SQL语句数据表名:字符型<必需>
'FieldStr   SQL语句数据字段:字符型<必需> (用","号分隔)
'FieldLen   数据字段字符长度:字符型<必需> (数字用","号分隔,必须与数据字段数目相等,0值则长度不变化)
'WhereStr   SQL语句Where条件:字符型,如果长度<3或为空,则为空
'OrderMode   SQL语句排序方法:数字型,0为"Asc",非0为"Desc",如果为空,则为"Asc"
'KeyField   SQL语句主键名:字符型,如果为空,则为"Id"
'TextFromHtml  是否过滤HTML代码:数字型 (0或1,默认为0,0:不过滤 1:过滤)
'RedWord   获得需加红关键字,如为空,则不加红
'RedWordControl  获得加红关键字控制,如为空,则不加红色(由","号分隔的0或1,如不为空,则必须与数据字段数目相等,0:加红 1:不加红)
'
'--------Property Get--------
'RecCount   记录总数
'PageNum   分页总数
'
'--------Function--------
'PageAcContent  内容列表主体显示
'PageAcName   分页辨识名称
'================================================

'Response.Cookies("PageAc")("PageNum") = ""
'Response.Cookies("PageAc")("PageAcName") = ""
'Response.Cookies("PageAc")("RecCount") = ""

 

Class Cls_PageAc
 Private strPageAcName
 Private lngEndId,TempListHtml,TempListHtmlStr
 Private Rs,SqlStr
 Private strFieldStr,strFieldLen,strTableStr,strWhereStr,strKeyField,strRedWord,strRedWordControl
 Private intOrderMode,lngPages,lngRecCount,lngPageNum,intPageSize,intTextFromHtml
 Private i,j,n
 Private arrFieldStr,arrFieldLen,arrRsHtml,arrRedWord,arrRedWordControl
 
 
 '####内容列表主体显示
 Public Function PageAcContent()
  'response.Write(Request.Cookies("PageAc")("PageNum"))
  SqlStr = "Select "&strFieldStr&" From "&strTableStr&" "&strWhereStr&" Order By "&strKeyField&" "&intOrderMode&""
  'SqlStr = "Select * from test"
  'response.Write(SqlStr)
  Set Rs = Server.CreateObject("Adodb.Recordset")
  Rs.Open SqlStr,Conn,1,1
  
  If Not (Rs.Eof And Rs.Bof) Then
   Rs.AbsolutePosition = (lngPages-1) * intPageSize + 1
   For i = 1 To intPageSize
    If Rs.Eof Or Rs.Bof Then Exit For
    arrFieldStr = Split(strFieldStr,",")
    arrFieldLen = Split(strFieldLen,",")
    arrRsHtml = Split(strFieldLen,",")
    arrRedWordControl = Split(strRedWordControl,",")
    TempListHtmlStr = TempListHtml
    For j = LBound(arrFieldStr) To UBound(arrFieldStr)
     'response.Write(arrFieldLen(j)&"<br>")
     If intTextFromHtml = 1 Then
      arrRsHtml(j) = GetTextFromHtml(Rs(arrFieldStr(j)))
     Else
      arrRsHtml(j) = Rs(arrFieldStr(j))
     End If
     arrFieldLen(j) = Cint(arrFieldLen(j))
     If arrFieldLen(j) = 0 Then
      arrRsHtml(j) = arrRsHtml(j)
     Else
      arrRsHtml(j) = KeepLen(arrRsHtml(j),arrFieldLen(j))
     End If
     If strRedWord <> "" And strRedWordControl <> "" Then
      If arrRedWordControl(j) <> 0 Then
       arrRedWord = Split(strRedWord," ")
       For n = LBound(arrRedWord) To UBound(arrRedWord)
        If Instr("<span style=color:#f00></span>",arrRedWord(n)) > 0 Then Exit For
        arrRsHtml(j) = Replace(arrRsHtml(j),arrRedWord(n),"<span style=color:#f00>"&arrRedWord(n)&"</span>",1)
       Next
      End If
     End If
     TempListHtmlStr = Replace(TempListHtmlStr,"$"&arrFieldStr(j)&"$",arrRsHtml(j))
     'lngEndId = Rs("Id")
    Next
    'Response.Write(i)
    'Response.Write(rs("id"))
    Response.Write(TempListHtmlStr)
    Rs.MoveNext
   Next
  Else
   Response.Write("没有资源记录!")
  End If
  
  Rs.Close
  Set Rs = Nothing
 End Function
 
 
 '####记录总数
 Public Property Get RecCount()
  If Request.Cookies("PageAc")("PageAcName") <> PageAcName() Or Request.Cookies("PageAc")("RecCount") = "" Then
   lngRecCount = Conn.Execute("Select Count("&strKeyField&") From "&strTableStr&" "&strWhereStr&"",0,1)(0)
   Response.Cookies("PageAc")("PageAcName") = PageAcName()
   Response.Cookies("PageAc")("RecCount") = CLng(lngRecCount)
   RecCount = CLng(lngRecCount)
  Else
   lngRecCount = CLng(Request.Cookies("PageAc")("RecCount"))
   RecCount = lngRecCount
  End If
 End ProPerty
 
 '####分页总数
 Public Property Get PageNum()
  lngPageNum = lngRecCount / intPageSize
  If lngPageNum > CLng(lngPageNum) Then
   lngPageNum = CLng(lngPageNum) + 1
  Else
   lngPageNum = CLng(lngPageNum)
  End If
  Response.Cookies("PageAc")("PageNum") = CLng(lngPageNum)
  PageNum = lngPageNum
 End ProPerty
 
 '####取得循环模板
 Public ProPerty Let ListHtml(Str)
  TempListHtml = Str
 End ProPerty
 
 '####取得当前Pages数
 Public ProPerty Let Pages(Num)
  lngPages = CLng(Num)
  If lngPages < 1 Then lngPages = 1
 End ProPerty
 
 '####取得PageSize数
 Public ProPerty Let PageSize(Num)
  intPageSize = CInt(Num)
 End ProPerty
 
 '####取得Table字符
 Public ProPerty Let TableStr(Str)
  strTableStr = Str
 End ProPerty
 
 '####取得field字符
 Public ProPerty Let FieldStr(Str)
  strFieldStr = Str
  'If Trim(strFieldStr) = "" Then strFieldStr = "*"
 End ProPerty
 
 '####取得field字符长度
 Public ProPerty Let FieldLen(Str)
  strFieldLen = Str
 End ProPerty
  
 '####取得Where条件字符
 Public ProPerty Let WhereStr(Str)
  If Len(Trim(Str)) >= 3 Then
   strWhereStr = "Where "&Trim(Str)
  Else
   strWhereStr = ""
  End If  
 End ProPerty
 
 '####取得Order方式
 Public ProPerty Let OrderMode(Num)
  If CInt(Num) = 0 Then
   intOrderMode = "Asc"
  Else
   intOrderMode = "Desc"
  End If
 End ProPerty
 
 '####取得主键字段
 Public ProPerty Let KeyField(Str)
  strKeyField = Trim(Str)
  If strKeyField = "" Then strKeyField = "Id"
 End ProPerty
 
 '####是否过滤HTML代码
 Public ProPerty Let TextFromHtml(Num)
  intTextFromHtml = Cint(Num)
  If intTextFromHtml <> 1 Then intTextFromHtml = 0
 End ProPerty
 
 '####取得加红关键字
 Public ProPerty Let RedWord(Str)
  strRedWord = Str
 End ProPerty
 
 '####取得加红关键字控制
 Public ProPerty Let RedWordControl(Str)
  strRedWordControl = Str
 End ProPerty
 
 '####分页辨识名称
 Private Function PageAcName()
  strPageAcName = Server.UrlEnCode(strTableStr) & Server.UrlEnCode(strWhereStr) & Server.UrlEnCode(intOrderMode)
  PageAcName = strPageAcName & "Kangk"
 End Function
 
 '####截取字符指定长度
 Private Function KeepLen(Str,Lens)
  If len(str)>Lens Then
   KeepLen=Left(Str,Lens) & "..."
  Else
   KeepLen=Str
  End if
 End Function
 
 Public Function GetTextFromHtml(strHtml)
        Dim strPatrn
            strpatrn="<.*?>"
        Dim regEx
        Set regEx = New RegExp
        regEx.Pattern = strPatrn
        regEx.IgnoreCase = True
        regEx.Global = True
        GetTextFromHtml = regEx.Replace(strHtml,"")
    End Function
End Class

'#################################################
'面页跳转链接函数
'传入:类ID,当前页码,记录总数,分页总数,显示页码数
'#################################################
Function PLink(cId,Pages,PCount,PNum,ShowNum)
 Dim tmpHtml
 Dim i,PageStart,PageEnd
 Dim ShowP,ShowS
  ShowP = ShowNum '显示页码数
  ShowS = CInt((ShowP-1)/2)
  tmpHtml = ""
  tmpHtml = "共 <b>"&PCount&"</b> 条 / <b>"&PNum&"</b> 页 &nbsp;"
  tmpHtml = tmpHtml & " 当前是 <b>"&Pages&"</b> 页 &nbsp;&nbsp;"
  tmpHtml = tmpHtml & " <a href=""?cId="&cId&"&Pages=1"">最前页</a>"
  tmpHtml = tmpHtml & " <a href=""?cId="&cId&"&Pages="&Pages-1&""">上一页</a>"
  
 If Pages < ShowS Then
  PageStart = 1
  PageEnd = ShowP
 ElseIf Pages > PNum - ShowP Then
  PageStart = PNum - ShowP
  PageEnd = PNum
 Else
  PageStart = Pages - ShowS
  PageEnd = Pages + ShowS
 End If
 For i = PageStart to PageEnd
  If i > PNum Then Exit For
  If i = Pages Then
   tmpHtml = tmpHtml & " <a href=""?cId="&cId&"&Pages="&i&"""><font color=""#FF0000""><b>"&i&"</b></font></a> "
  Else
   tmpHtml = tmpHtml & " <a href=""?cId="&cId&"&Pages="&i&"""><b>"&i&"</b></a>"
  End If
 Next
 
 tmpHtml = tmpHtml & " <a href=""?cId="&cId&"&Pages="&Pages+1&""">下一页</a>"
 tmpHtml = tmpHtml & " <a href=""?cId="&cId&"&Pages="&PNum&""">最后页</a>"
 tmpHtml = tmpHtml & "&nbsp;&nbsp;转到:"
 tmpHtml = tmpHtml & "<input name=""Pages"" type=""text"" id=""Pages"" style=""width:18px; height:14px; border:1px solid #cccccc;"" /><input name=""Submit"" type=""submit"" id=""Submit"" value=""GO"" style=""width:18px; height:18px; border:1px solid #cccccc;"" onclick=""window.location='?cId="&cId&"&Pages='+Pages.value"" />"
 PLink = tmpHtml
End Function
 %>

时间: 2024-11-01 06:01:18

ASP高效分页类的相关文章

ASP通用分页类

分页 一.类的属性.方法 这是一个ASP通用分页类.你可以用它方便的给记录集分页,当然在网上有许多的分页类和分页函数.本分页主要有GetConn.GetRS.SQL.URL.CSSFile.FldName.FldNote.FldWidth.FldAlign.ShowPageType.TleFTColor.TleWidth.PageSize.ShowWidth.Init.Pages.ShowData.Close等属性和方法. 1.GetConn属性:用来获取一个已创建的Connection对象.

简单好用的ASP.NET分页类(支持AJAX、自定义文字)

  这篇文章主要介绍了简单好用的ASP.NET分页类(支持AJAX.自定义文字),本文直接给出实现代码和使用方法,需要的朋友可以参考下 在做网站没用 JS UI控件时 很实用 用法: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 var ps=new PageString();   /*可选参数*/   ps.SetIsEnglish = true;// 是否是英文 (默认:false) ps.SetIsShowText = true;//是

ASP经典分页类_应用技巧

ASP经典分页类  出处      '===================================================================== 'XDOWNPAGE   ASP版本 '版本   1.00 'Code by  zykj2000 'Email:   zykj_2000@163.net 'BBS:   http://bbs.513soft.net '本程序可以免费使用.修改,希望我的程序能为您的工作带来方便 '但请保留以上请息 ' '程序特点 '本程序

asp 文章分页类

asp 文章分页类 <% Class Cls_Page  '**************************************************  '函数名:ShowPage  '作  用:显示分页  '参  数:如下  'strFileName : ?后面的文件,如xxx.asp?page=  'xTotalNum  : 总数  'xPageCount     : 总页数     'xMaxPerPage : 每页显示数量  'xCurrentPage : 当前页数  'xPa

创建一个ASP通用分页类

创建|分页 转自"蓝色理想" http://www.blueidea.com/tech/program/2004/1989.asp.ASP分页一直是一个众说纷坛的话题,而且也没有一个太有效的方法.今天在CSDN的BLOG里看到了这个ASP分页类,(http://blog.csdn.net/xiangbo520/archive/2004/09/22/113539.aspx),只是提供了源码,而且源码中部分标签已被作为HTML显示了,想复制下来也不太容易,所有到蓝色理想找到了一篇全面一点的

创建一个ASP通用分页类_ASP CLASS类

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

简单好用的ASP.NET分页类(支持AJAX、自定义文字)_实用技巧

在做网站没用 JS UI控件时 很实用 用法: var ps=new PageString(); /*可选参数*/ ps.SetIsEnglish = true;// 是否是英文 (默认:false) ps.SetIsShowText = true;//是否显示分页文字 (默认:true) //ps.TextFormat="" (默认值:<span class=\"pagetext\"><strong>总共</strong>:{0

asp 通用分页类

<%@LANGUAGE = "VBScript" CODEPAGE="936"%> <%Option Explicit%> <!--#include file="Cls_PageView.asp"--> Class Cls_PageView  Private sbooInitState  Private sstrPageUrl  Private sstrPageVar  Private sstrSql  Pri

php高效分页类代码(1/2)

这个类适用于配合数据库教程查询分页,和数组分页.下面有使用方法. [php教程] <?php /* * 名称: 分页类 * 介绍: 适用于数组分页和配合sql查询的分页 * 作者: idlion || moonfly (id_lion@hotmail.com) * 创建时间: 2006-02-18 * 最后修改: 2007-05-24 */ class pagebreak { private $mtotalrowsnum = 0;   // 总信息行数 private $mcurpagenumb