asp的通用数据分页类

2019-07-23 08:07:25来源:爱站网 阅读 ()

新老客户大回馈,云服务器低至5折

一般的ASP分页类代码,都是用这个方法进行操作的,似乎更灵活ASP分页代码,其实数据分页部分被封装,数据显示部分完全由用户定义,那么asp的通用数据分页类大家知道吗?一起进入下文了解吧!

?(原创)<!--#include?file="Conn.asp"?-->
通用数据分页类
????通用分页类,以后写分页显示数据时就轻松多啦.直接调用此类,然后再Execute即可以取得当前页的所有数据.
????此类所做的工作是只取得当前页的数据,和总页数和总记录数等等数据.

ASP代码:
<%
'/*****************************分页显示类**************************
'/*?作者:哇哇鱼
'/*?日期:2004年11月18日
'/*?作用:取得某一页的数据并返回给外部
'/*?说明示例:
'/*?Dim?MyPage=New?PageClass
'/*?MyPage.Conn=Conn????????????????'设置连接对象
'/*?MyPage.PageSize=20?????????????????'设置一页显示多少条数据?(默认为10条)
'/*?MyPage.CurPage=2???????????????????'设置当前要显示的页码
'/*''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'/*?MyPage.TableName="Member"???????'设置表名
'/*?MyPage.Fields="ID,MemberName,MemberPass"???'设置显示字段列表
'/*?MyPage.Condition="ID>100"??????????'设置查询条件
'/*?MyPage.OrderBy="ID?DESC"???????????'设置排序条件(一定要设置该属性)
'/*?Set?PageRs=MyPage.Execute??????????'返回当前第2页的数据(RecordSet对象),如果出错则返回Nothing值
'/*''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'/*'以上的定义也可以用以下的方法:ExecuteBy("表名","字段列表","查询条件","排序条件")
'/*?Set?PageRs=MyPage.ExecuteBy("Member","ID,MemberName,MemberPass","ID>100","ID?DESC")
'/*''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'/*?PageCount=MyPage.PageCount?????????'返回页码总数
'/*?RecordCount=MyPage.RecordCount?????'返回记录总数
'/*?NextPage=MyPage.NextPage???????????'返回下页的页码
'/*?PrePage=MyPage.PrePage?????????????'返回上一页的页码
'/*****************************************************************
Class?PageClass
????Private?Connection???????????????'连接数据库的外部Connection对象
????Private?Rs
????Private?List_Fields
????Private?Table_Name
????Private?Query_Where
????Private?OrderBy_SQL??????????????'字段排序语句部分
????Private?Page_Count???????????????'返回当前查询的记录页总数
????Private?Page_Size????????????????'设置一页显示多少条的记录
????Private?Cur_Page?????????????????'设置当前的页码
????Private?Record_Count?????????????'返回当前查询的记录总数

????'/****************设置Connection对象****************************
????Public?Property?Let?Conn(ByRef?ObjConn)
????????Set?Connection=ObjConn
????End?Property
????Public?Property?Get?Conn()
????????Set?Conn=Connection
????End?Property
????'/****************End******************************************

????'/****************设置查询SQL语句*******************************
????''查询显示字段
????Public?Property?Let?Fields(ByVal?Value)
????????List_Fields=Value
????End?Property
????Public?Property?Get?Fields()
????????Fields=List_Fields
????End?Property
????''查询表名
????Public?Property?Let?TableName(ByVal?Value)
????????Table_Name=Value
????End?Property
????Public?Property?Get?TableName()
????????TableName=Table_Name
????End?Property
????''查询条件
????Public?Property?Let?Condition(ByVal?Value)
????????Query_Where=Value
????End?Property
????Public?Property?Get?Condition()
????????Condition=Query_Where
????End?Property
????''*****************排序部分********************************************
????''Value?语不用写上Order?By?。如:?[object].OrderBy="ID?Desc,PostTime?Asc"
????Public?Property?Let?OrderBy(ByVal?Value)
????????OrderBy_SQL=Value
????End?Property
????Public?Property?Get?OrderBy()
????????OrderBy=OrderBy_SQL
????End?Property
????'/****************End******************************************

????'/****************返回当前查询结果的总页数***********************
????Public?Property?Get?PageCount()
????????PageCount=Page_Count
????End?Property
????Public?Property?Get?RecordCount()
????????RecordCount=Record_Count
????End?Property
????Public?Property?Get?NextPage()
????????If?Cur_Page<Page_Count?Then
????????????NextPage=Cur_Page+1
????????Else
????????????NextPage=Page_Count
????????End?If
????End?Property
????Public?Property?Get?PrePage()
????????If?Cur_Page>1?Then
????????????PrePage=Cur_Page-1
????????Else
????????????PrePage=Cur_Page
????????End?If
????End?Property
????'/****************End******************************************

????'/****************设置一页显示的记录数***************************
????Public?Property?Let?PageSize(ByVal?Value)
????????If?Not?IsNumeric(Value)?Or?Value=""?Then
????????????Value=10
????????Else
????????????Value=Cint(Value)
????????End?If
????????If?Value<1?Then?Value=10
????????Page_Size=Value
????End?Property
????Public?Property?Get?PageSize()
????????PageSize=Page_Size
????End?Property
????''设置当前的页码数**************************
????Public?Property?Let?Page(ByVal?Value)
????????If?Not?IsNumeric(Value)?Or?Value=""?Then
????????????Value=1
????????Else
????????????Value=CLng(Value)
????????End?If
????????If?Value<1?Then?Value=1
????????Cur_Page=Value
????End?Property
????Public?Property?Get?Page()
????????Page=Cur_Page
????End?Property
????'/****************End******************************************

????Private?Sub?Class_Initialize
????'初始化RecordSet对象
????????Page_Size=10????????????'默认一页为10条数据
????????CurPage=1???????????????????'默认当前为第一页
????????Record_Count=0
????????Page_Count=0
????End?Sub

????Private?Sub?Class_Terminate
????????Call?CloseRecordSet
????End?Sub

????'/***关闭数据库的连接*******
????Private?Sub?CloseRecordSet
????????On?Error?Resume?Next
????????If?IsObject(Rs)?Then
????????????Rs.Close
????????????Set?Rs=Nothing
????????End?If
????????On?Error?Goto?0
????End?Sub

????'/**********执行查询返回对应页码的数据***********************************************
????Public?Function?ExecuteBy(ByVal?oTableName,ByVal?oFields,ByVal?oCondition,ByVal?oOrderBy)
????????Table_Name=oTableName
????????List_Fields=oFields
????????Query_Where=oCondtion
????????OrderBy_SQL=oOrderBy
????????Set?ExecuteBy=Execute()
????End?Function
????'查询并返回当前CurPage的页码记录
????Public?Function?Execute()
????????Call?CloseRecordSet
????????On?Error?Resume?Next
????????Dim?TSQL,TopMod,sWhere
????????If?Not?IsObject(Connection)?Or?Table_Name=""?Or?OrderBy_SQL=""?Then
????????????Set?Execute=Nothing
????????????Record_Count=0
????????????Page_Count=0
????????????Exit?Function
????????End?If
????????If?Trim(Query_Where)<>""?Then?
????????????sWhere="Where?"&Query_Where
????????Else
????????????sWhere=""
????????End?If
????????TSQL="Select?Count(*)?From?["&Table_Name&"]?"&sWhere
????????Record_Count=Connection.Execute(TSQL)(0)????'获取记录总数
????????If?Err?Then
????????????Err.Clear
????????????Set?Execute=Nothing
????????????Record_Count=0
????????????Page_Count=0
????????????Exit?Function
????????End?If
????????If?Record_Count<1?Then
????????????Set?Execute=Nothing
????????????Record_Count=0
????????????Page_Count=0
????????????Exit?Function
????????End?If
????????'取得页的总数
????????If?Record_Count?Mod?Page_Size?<>0?Then
????????????TopMod=Record_Count?Mod?Page_Size
????????????Page_Count=Fix(Record_Count/Page_Size)+1
????????????If?Cur_Page<Page_Count?Then
????????????????TopMod=Page_Size
????????????End?If
????????Else
????????????TopMod=Page_Size
????????????Page_Count=Fix(Record_Count/Page_Size)
????????End?If
????????If?Cur_Page>Page_Count?Then?Cur_Page=Page_Count
????????If?Cur_Page<1?Then?Cur_Page=1
????????If?Trim(List_Fields)=""?Then?List_Fields="*"
????????TSQL="Select?*?From?(Select?Top?"&TopMod&"?*?From?(Select?Top?"&(Cur_Page*Page_Size)&"?"&List_Fields&"?From?["&Table_Name&"]?"&sWhere&"?Order?By?"&OrderBy_SQL&")?Order?By?"&TransformOrder(OrderBy_SQL)&")Order?By?"&OrderBy_SQL
????????Set?Rs=Connection.Execute(TSQL)
????????If?Err?Then
????????????Err.Clear
????????????Set?Execute=Nothing
????????????Record_Count=0
????????????Page_Count=0
????????????Exit?Function
????????End?If
????????Set?Execute=Rs
????End?Function

????'转换OrderBy的顺序?ASC->DESC???DESC->ASC
????Private?Function?TransformOrder(ByVal?Value)
????????If?Value=""?Then
????????????TransformOrder=""
????????????Exit?Function
????????End?If
????????Dim?OrderArray,i,Result,ByString,Fields,InPos
????????OrderArray=Split(Value,",")???'分解每个字段值
????????For?i=0?To?Ubound(OrderArray)
????????????If?OrderArray(i)<>""?Then
????????????????InPos=InStrRev(Trim(OrderArray(i)),"?")??'找出排序的顺序
????????????????If?InPos<1?Then??'如果找不到则是ASC排序
????????????????????ByString="ASC"
????????????????????Fields=OrderArray(i)+"?"
????????????????Else
????????????????????ByString=Trim(Mid(OrderArray(i),InPos+1))
????????????????????Fields=Left(OrderArray(i),InPos)
????????????????????If?ByString<>""?Then
????????????????????????ByString=UCase(ByString)
????????????????????Else
????????????????????????ByString="ASC"
????????????????????End?If
????????????????End?If
????????????????''转换排序
????????????????If?ByString="ASC"?Then
????????????????????ByString="DESC"
????????????????Else
????????????????????ByString="ASC"
????????????????End?If
????????????????Result=Result+Fields+ByString+","
????????????End?If
????????Next
????????If?Result<>""?Then?Result=Left(Result,Len(Result)-1)
????????TransformOrder=Result
????End?Function
End?Class


'示例代码:
Sub?Show_List
????Dim?Page,PageRs
????Page=Request("Page")
????Dim?MyPage
????Set?MyPage=New?PageClass
????MyPage.Conn=Conn
????MyPage.PageSize=20
????MyPage.Page=Page
????MyPage.TableName="table1"
????MyPage.Fields="*"
????MyPage.OrderBy="ID?Asc"
????Set?PageRs=MyPage.Execute
????'Set?PageRs=MyPage.ExecuteBy("table1","*","","ID?Asc")
????If?PageRs?Is?Nothing?Then?Exit?Sub
????Do?Until?PageRs.Eof
????????Response.Write?"?<tr?bgcolor=""#FDFDFD""?style=""cursor:hand""?onmouseover=""this.style.background='#F3F3F3'""?onmouseout=""this.style.background='#FDFDFD'"">"
????????Response.Write?"????<td?height=""20""><div?align=""center"">"&PageRs("ID")&"</div></td>"
????????Response.Write?"????<td>"&PageRs("aaaa")&"</td>"
????????Response.Write?"????<td><a?href="""&PageRs("bbbb")&"""><font?color='#000000'>"&PageRs("bbbb")&"</font></a></td>"
????????Response.Write?"????<td>"&PageRs("cccc")&"</td>"
????????Response.Write?"??</tr>"
????????PageRs.MoveNext
????Loop
????PageRs.Close
????PageCount=MyPage.PageCount
????Page=MyPage.Page????????????'取得当前正确的页码数
????NextPage=MyPage.NextPage
????PrePage=MyPage.PrePage
????Set?PageRs=Nothing
????Set?MyPage=Nothing
End?Sub
Show_List
%>?
  不知道大家在看完了上面的这些介绍有没有对asp的通用数据分页类有了了解,其实,只要大家能够稍微的深入了解一下,就能够很轻松的了解这些不同的操作方法了。


原文链接:https://js.aizhan.com/develop/asp/7683.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:ASP 3.0高级编程(二十八)

下一篇:如何用ASP打开远端MDB文件

热门词条
热门标签