加入收藏 | 设为首页 | 会员中心 | 我要投稿 驾考网 (https://www.jiakaowang.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

ASP.NET 中用于处理全局数据页面展示的技术

发布时间:2023-08-16 14:38:52 所属栏目:Asp教程 来源:
导读:一般的ASP分页类代码,都是用这个方法进行操作的,似乎更灵活ASP分页代码,其实数据分页部分被封装,数据显示部分完全由用户定义,那么asp的通用数据分页类大家知道吗?一起进入下文了解吧!

(原创)<!--#includ
一般的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"" 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的通用数据分页类有了了解,其实,只要大家能够稍微的深入了解一下,就能够很轻松的了解这些不同的操作方法了。
 
 

(编辑:驾考网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章