ASP分页类 不指定

admin , 2009/05/18 12:21 , 电脑技术 , 评论(1) , 阅读(763) , Via 本站原创 | |


说明:该ASP分页类由本人编写,把ASP默认分页进行了封装,力求让ASP分页操作简单一些。

注意:该ASP分页类只是简化了操作,并没有对分页进行优化。

代码:


===================Pager.asp===================

<%
'--------------------------------------------------------------------
'名称:ASP分页类 v2009
'
'作者:zhengbi(QQ:124895502 Email:zhengbi888@yahoo.com.cn)
'
'仅供参考,你可以任意修改、传播;如果你对它进行了改良,希望你能给我一个
'副本,谢谢。
'--------------------------------------------------------------------
Class TurnPage
Dim sPageNo,sPageSize,sPageCount,sRecordCount,sAbsoluteRecord

Private Sub Class_Initialize()
  sPageNo=Trim(Request.QueryString("PageNo"))
  If sPageNo<>"" Then
   sPageNo = Cdbl(sPageNo)
   Else
    sPageNo = 1
  End If
  sAbsoluteRecord = 1
End Sub

Public Sub GetRs(ByRef Conn,ByRef Rs,ByVal Sql,ByVal PageSize)
  Rs.Open Sql,Conn,1,1
  
  Rs.PageSize  = PageSize
  sPageSize  = Rs.PageSize
  sPageCount  = Rs.PageCount
  sRecordCount = Rs.RecordCount
  
  If Not Rs.Eof Then Rs.AbsolutePage = sPageNo
End Sub

Public Function Eof()
  If sAbsoluteRecord<=sPageSize Then
   sAbsoluteRecord = sAbsoluteRecord + 1
   Eof = False
   Else
    Eof = True
  End If
End Function

Public Sub GetPageList()
  Dim sURL,sTmp,sQUERY_STRING,p,n,i,a,b
  
  sURL = Request.ServerVariables("URL")
  sQUERY_STRING = Request.ServerVariables("QUERY_STRING")
  sTmp = Split(sURL,"/")
  sURL = sTmp(Ubound(sTmp))
  If sQUERY_STRING <> "" Then sQUERY_STRING=Replace(sQUERY_STRING,"PageNo=" & sPageNo,"")
  If sQUERY_STRING = "" Then
   sURL = sURL & "?"
   Else
    sURL = sURL & "?" & sQUERY_STRING & "&"
  End If
  sURL = Replace(sURL,"&&","&")
  
  p = sPageNo-1
  n = sPageNo+1
  If p<1 Then p = 1
  If n>sPageCount Then n = sPageCount
  
  a = sPageNo-5
  b = sPageNo+5
  If a<1 Then a = 1
  If b>sPageCount Then b = sPageCount
    
  Response.Write("<div class=""page_nav"">")
  
  If sPageNo>1 Then Response.Write("<a href=""" & sURL & "PageNo=1"">首页</a> <a href=""" & sURL &"PageNo=" & p & """>上页</a>")
  
  For i=a To b
   If i = sPageNo Then
    Response.Write( " " & i)
    Else
    Response.Write(" <a href=""" & sURL & "PageNo=" & i & """>[" & i & "]</a>")
   End If
  Next
  If sPageNo < sPageCount Then Response.Write(" <a href=""" & sURL & "PageNo=" & n & """>下页</a> <a href=""" & sURL & "PageNo=" & sPageCount & """>尾页</a>")

  Response.Write("</div>")
End Sub
End Class
%>



====================演示文件text.asp====================

说明:该ASP分页类由本人编写,把ASP默认分页进行了封装,力求让ASP分页操作简单一些。

注意:该ASP分页类只是简化了操作,并没有对分页进行优化。

代码:

===================Pager.asp===================

<%
'--------------------------------------------------------------------
'名称:ASP分页类 v2009
'
'作者:zhengbi(QQ:124895502 Email:zhengbi888@yahoo.com.cn)
'
'仅供参考,你可以任意修改、传播;如果你对它进行了改良,希望你能给我一个
'副本,谢谢。
'--------------------------------------------------------------------
Class TurnPage
Dim sPageNo,sPageSize,sPageCount,sRecordCount,sAbsoluteRecord

Private Sub Class_Initialize()
  sPageNo=Trim(Request.QueryString("PageNo"))
  If sPageNo<>"" Then
   sPageNo = Cdbl(sPageNo)
   Else
    sPageNo = 1
  End If
  sAbsoluteRecord = 1
End Sub

Public Sub GetRs(ByRef Conn,ByRef Rs,ByVal Sql,ByVal PageSize)
  Rs.Open Sql,Conn,1,1
  
  Rs.PageSize  = PageSize
  sPageSize  = Rs.PageSize
  sPageCount  = Rs.PageCount
  sRecordCount = Rs.RecordCount
  
  If Not Rs.Eof Then Rs.AbsolutePage = sPageNo
End Sub

Public Function Eof()
  If sAbsoluteRecord<=sPageSize Then
   sAbsoluteRecord = sAbsoluteRecord + 1
   Eof = False
   Else
    Eof = True
  End If
End Function

Public Sub GetPageList()
  Dim sURL,sTmp,sQUERY_STRING,p,n,i,a,b
  
  sURL = Request.ServerVariables("URL")
  sQUERY_STRING = Request.ServerVariables("QUERY_STRING")
  sTmp = Split(sURL,"/")
  sURL = sTmp(Ubound(sTmp))
  If sQUERY_STRING <> "" Then sQUERY_STRING=Replace(sQUERY_STRING,"PageNo=" & sPageNo,"")
  If sQUERY_STRING = "" Then
   sURL = sURL & "?"
   Else
    sURL = sURL & "?" & sQUERY_STRING & "&"
  End If
  sURL = Replace(sURL,"&&","&")
  
  p = sPageNo-1
  n = sPageNo+1
  If p<1 Then p = 1
  If n>sPageCount Then n = sPageCount
  
  a = sPageNo-5
  b = sPageNo+5
  If a<1 Then a = 1
  If b>sPageCount Then b = sPageCount
    
  Response.Write("<div class=""page_nav"">")
  
  If sPageNo>1 Then Response.Write("<a href=""" & sURL & "PageNo=1"">首页</a> <a href=""" & sURL &"PageNo=" & p & """>上页</a>")
  
  For i=a To b
   If i = sPageNo Then
    Response.Write( " " & i)
    Else
    Response.Write(" <a href=""" & sURL & "PageNo=" & i & """>[" & i & "]</a>")
   End If
  Next
  If sPageNo < sPageCount Then Response.Write(" <a href=""" & sURL & "PageNo=" & n & """>下页</a> <a href=""" & sURL & "PageNo=" & sPageCount & """>尾页</a>")

  Response.Write("</div>")
End Sub
End Class
%>



====================演示文件text.asp====================

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="Pager.asp"-->
<%
Dim Conn,ConnStr,Rs
ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("Db/Ok3w2009.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ConnStr
Set Rs = Server.CreateObject("Adodb.RecordSet")
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>ASP分页演示</title>
</head>

<body>
<%
Sql = "select ID,Title from Ok3w_Article where IsPass=1 order by Id desc"
Set Page = New TurnPage

'调用说明:数据库连接对像Conn,记录集Rs,查询命令SQL,每页显示的条数PageSize
Call Page.GetRs(Conn,Rs,Sql,10)

Do While Not Rs.Eof And Not Page.Eof
%>
<a href="show.asp?id=<%=Rs("ID")%>"><%=Rs("Title")%></a><br />
<%
Rs.MoveNext
Loop
Rs.Close
%>
<hr />

<!--显示分页导航-->
<%Call Page.GetPageList()%>
</body>
</html>
<%
Set Rs = Nothing
Conn.Close
Set Conn = Nothing
%>



比起一般的分页,该分页类关键的就是二条语句:

初始化记录集:Call Page.GetRs(Conn,Rs,Sql,PageSize)

显示分页导航:Call Page.GetPageList()

作者:admin@我们生活的年代
地址:http://www.1598.net/read.php/62.htm
版权所有©转载时必须以链接形式注明作者和原始出处及本声明!

白开水 Email Homepage
2009/06/17 17:44
为什么我用了你的分页函数,怎么会出现重复的记录,望高人指点以下
分页: 1/1 第一页 1 最后页
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]