• ASP通用分页类[强]


    <style>
    body{ font-size:12px; color:#000000;}
    a, a:link, a:visited{font-size:12px; color:#333333; text-decoration:none;}
    a:hover, a:active{font-size:12px; color:#666666; text-decoration:underline;}
    </style>
    <%
    '===================================================================
    'XDOWNPAGE ASP版本
    '程序特点
    '本程序主要是对数据分页的部分进行了封装,而数据显示部份完全由用户自定义,
    '支持URL多个参数
    '使用说明
    '程序参数说明
    'PapgeSize 定义分页每一页的记录数
    'GetRS 返回经过分页的Recordset此属性只读
    'GetConn 得到数据库连接
    'GetSQL 得到查询语句
    '程序方法说明
    'ShowPage 显示分页导航条,唯一的公用方法
    '===================================================================

    Const Btn_First="<font face=""webdings"">9</font>" '定义第一页按钮显示样式
    Const Btn_Prev="<font face=""webdings"">3</font>" '定义前一页按钮显示样式
    Const Btn_Next="<font face=""webdings"">4</font>" '定义下一页按钮显示样式
    Const Btn_Last="<font face=""webdings"">:</font>" '定义最后一页按钮显示样式
    Const XD_Align="Center" '定义分页信息对齐方式
    Const XD_Width="100%" '定义分页信息框大小

    Class Xdownpage
    Private XD_PageCount,XD_Conn,XD_Rs,XD_SQL,XD_PageSize,Str_errors,int_curpage,str_URL,int_totalPage,int_totalRecord,XD_sURL


    '=================================================================
    'PageSize 属性
    '设置每一页的分页大小
    '=================================================================
    Public Property Let PageSize(int_PageSize)
    If IsNumeric(Int_Pagesize) Then
    XD_PageSize=CLng(int_PageSize)
    Else
    str_error=str_error & "PageSize的参数不正确"
    ShowError()
    End If
    End Property
    Public Property Get PageSize
    If XD_PageSize="" or (not(IsNumeric(XD_PageSize))) Then
    PageSize=10
    Else
    PageSize=XD_PageSize
    End If
    End Property

    '=================================================================
    'GetRS 属性
    '返回分页后的记录集
    '=================================================================
    Public Property Get GetRs()
    Set XD_Rs=Server.createobject("adodb.recordset")
    XD_Rs.PageSize=PageSize
    XD_Rs.Open XD_SQL,XD_Conn,1,1
    If not(XD_Rs.eof and XD_RS.BOF) Then
    If int_curpage>XD_RS.PageCount Then
    int_curpage=XD_RS.PageCount
    End If
    XD_Rs.AbsolutePage=int_curpage
    End If
    Set GetRs=XD_RS
    End Property

    '================================================================
    'GetConn 得到数据库连接
    '
    '================================================================
    Public Property Let GetConn(obj_Conn)
    Set XD_Conn=obj_Conn
    End Property

    '================================================================
    'GetSQL 得到查询语句
    '
    '================================================================
    Public Property Let GetSQL(str_sql)
    XD_SQL=str_sql
    End Property



    '==================================================================
    'Class_Initialize 类的初始化
    '初始化当前页的值
    '
    '==================================================================
    Private Sub Class_Initialize
    '========================
    '设定一些参数的黙认值
    '========================
    XD_PageSize=10 '设定分页的默认值为10
    '========================
    '获取当前面的值
    '========================
    If request("page")="" Then
    int_curpage=1
    ElseIf not(IsNumeric(request("page"))) Then
    int_curpage=1
    ElseIf CInt(Trim(request("page")))<1 Then
    int_curpage=1
    Else
    Int_curpage=CInt(Trim(request("page")))
    End If

    End Sub

    '====================================================================
    'ShowPage 创建分页导航条
    '有首页、前一页、下一页、末页、还有数字导航
    '
    '====================================================================
    Public Sub ShowPage()
    Dim str_tmp
    XD_sURL = GetUrl()
    int_totalRecord=XD_RS.RecordCount
    If int_totalRecord<=0 Then
    str_error=str_error & "总记录数为零,请输入数据"
    Call ShowError()
    End If
    If int_totalRecord="" then
    int_TotalPage=1
    Else
    If int_totalRecord mod PageSize =0 Then
    int_TotalPage = CLng(int_TotalRecord / XD_PageSize * -1)*-1
    Else
    int_TotalPage = CLng(int_TotalRecord / XD_PageSize * -1)*-1+1
    End If
    End If

    If Int_curpage>int_Totalpage Then
    int_curpage=int_TotalPage
    End If

    '==================================================================
    '显示分页信息,各个模块根据自己要求更改显求位置
    '==================================================================
    response.write ""
    str_tmp=ShowPageInfo
    response.write str_tmp
    str_tmp=ShowFirstPrv
    response.write str_tmp
    str_tmp=showNumBtn
    response.write str_tmp
    str_tmp=ShowNextLast
    response.write str_tmp
    response.write ""
    End Sub

    '====================================================================
    'ShowFirstPrv 显示首页、前一页
    '
    '
    '====================================================================
    Private Function ShowFirstPrv()
    Dim Str_tmp,int_prvpage
    If int_curpage=1 Then
    str_tmp=Btn_First&" "&Btn_Prev
    Else
    int_prvpage=int_curpage-1
    str_tmp="<a href="""&XD_sURL & "1" & """>" & Btn_First&"</a> <a href=""" & XD_sURL & CStr(int_prvpage) & """>" & Btn_Prev&"</a>"
    End If
    ShowFirstPrv=str_tmp
    End Function

    '====================================================================
    'ShowNextLast 下一页、末页
    '
    '====================================================================
    Private Function ShowNextLast()
    Dim str_tmp,int_Nextpage
    If Int_curpage>=int_totalpage Then
    str_tmp=Btn_Next & " " & Btn_Last
    Else
    Int_NextPage=int_curpage+1
    str_tmp="<a href=""" & XD_sURL & CStr(int_nextpage) & """>" & Btn_Next&"</a> <a href="""& XD_sURL & CStr(int_totalpage) & """>" & Btn_Last&"</a>"
    End If
    ShowNextLast=str_tmp
    End Function


    '====================================================================
    'ShowNumBtn 数字导航
    '
    '====================================================================
    Private Function showNumBtn()
    Dim i,str_tmp,a
    if Int_curpage>1 then a=1
    if Int_curpage>2 then a=2
    if Int_curpage>3 then a=3
    if Int_curpage>4 then a=4
    'For i=1 to int_totalpage
    For i=Int_curpage-a to Int_curpage+4
    if i>int_TotalPage then exit for
    str_tmp=str_tmp & "[<a href=""" & XD_sURL & CStr(i) & """>"&i&"</a>] "
    Next
    showNumBtn=str_tmp
    End Function

    '====================================================================
    'ShowPageInfo 分页信息
    '更据要求自行修改
    '
    '====================================================================
    Private Function ShowPageInfo()
    Dim str_tmp
    str_tmp="页次:"&int_curpage&"/"&int_totalpage&"页 共"&int_totalrecord&"条记录 "&XD_PageSize&"条/页&nbsp;&nbsp;"
    ShowPageInfo=str_tmp
    End Function
    '==================================================================
    'GetURL 得到当前的URL
    '更据URL参数不同,获取不同的结果
    '
    '==================================================================
    Private Function GetURL()
    Dim strurl,str_url,i,j,search_str,result_url
    search_str="page="

    strurl=Request.ServerVariables("URL")
    Strurl=split(strurl,"/")
    i=UBound(strurl,1)
    str_url=strurl(i)'得到当前页文件名

    str_params=Trim(Request.ServerVariables("QUERY_STRING"))
    If str_params="" Then
    result_url=str_url & "?page="
    Else
    If InstrRev(str_params,search_str)=0 Then
    result_url=str_url & "?" & str_params &"&page="
    Else
    j=InstrRev(str_params,search_str)-2
    If j=-1 Then
    result_url=str_url & "?page="
    Else
    str_params=Left(str_params,j)
    result_url=str_url & "?" & str_params &"&page="
    End If
    End If
    End If
    GetURL=result_url
    End Function

    '====================================================================
    ' 设置 Terminate 事件。
    '
    '====================================================================
    Private Sub Class_Terminate
    XD_RS.close
    Set XD_RS=nothing
    End Sub
    '====================================================================
    'ShowError 错误提示
    '
    '====================================================================
    Private Sub ShowError()
    If str_Error <> "" Then
    Response.Write("" & str_Error & "")
    Response.End
    End If
    End Sub
    End class

    ''************************************************************************
    ''使用方法
    ''************************************************************************

    set conn = server.createObject("adodb.connection")
    conn.open "driver={microsoft access driver (*.mdb)};dbq=" & server.Mappath("pages.mdb")

    '#############类调用样例#################
    '创建对象
    Set mypage=new xdownpage
    '得到数据库连接
    mypage.getconn=conn
    'sql语句
    mypage.getsql="select * from test order by id"
    '设置每一页的记录条数据为5条
    mypage.pagesize=5
    '返回Recordset
    set rs=mypage.getrs()

    '显示数据
    Response.Write("<br/>")
    for i=1 to mypage.pagesize
    '这里就可以自定义显示方式了
    if not rs.eof then
    response.write rs(0) & "&nbsp;&nbsp;"&rs(1)&"<br/>"
    rs.movenext
    else
    exit for
    end if
    next

    '显示分页信息,这个方法可以,在set rs=mypage.getrs()以后,可在任意位置调用,可以调用多次
    mypage.showpage()
    %>
  • 相关阅读:
    Qt全局宏和变量
    QT_begin_namespace和QT_end_namespace的作用
    Qt 打开文件的默认路径 QFileDialog::getOpenFileName()
    QT的安装及环境配置
    C/C++文件操作1
    C/C++文件操作2
    AnsiString和String的区别、使用
    字符转换
    C++Builder中MessageBox的基本用法
    Windows 编程中恼人的各种字符以及字符指针类型
  • 原文地址:https://www.cnblogs.com/yamajia/p/1194442.html
Copyright © 2020-2023  润新知