zoukankan      html  css  js  c++  java
  • ASP经典分页类(改良后的分页类主要是显示属性)

    'XDOWNPAGE ASP版本
    '版本1.00
    'Code by zykj2000
    'Email:zykj_2000@163.net
    'BBS:http://bbs.513soft.net
    '本程序可以免费使用、修改,希望我的程序能为您的工作带来方便
    '但请保留以上请息
    '
    '程序特点
    '本程序主要是对数据分页的部分进行了封装,而数据显示部份完全由用户自定义,
    '支持URL多个参数
    '
    '使用说明
    '程序参数说明
    'PapgeSize 定义分页每一页的记录数
    'GetRS 返回经过分页的Recordset此属性只读
    'GetConn 得到数据库连接
    'GetSQL 得到查询语句
    '程序方法说明
    'ShowPage 显示分页导航条,唯一的公用方法
    '
    '例:
    '处理 SSI 文件时出错

    '处理 SSI 文件时出错
    '包含文件
    '
    'Set mypage=new xdownpage '创建对象
    ' mypage.getconn=conn '得到数据库连接
    ' mypage.getsql="select * from productinfo order by id asc"
    ' mypage.pagesize=5 '设置每一页的记录条数据为5条
    ' set rs=mypage.getrs() '返回Recordset
    ' mypage.showpage() '显示分页信息,这个方法可以,在set rs=mypage.getrs()以后
    ' 任意位置调用,可以调用多次
    ' for i=1 to mypage.pagesize '接下来的操作就和操作一个普通Recordset对象一样操作
    ' if not rs.eof then '这个标记是为了防止最后一页的溢出
    ' response.write rs(0) & "    '这里就可以自定义显示方式了
    ' rs.movenext
    ' else
    ' exit for
    ' end if
    ' next
    '
    '=====================================================================
    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%" '定义分页信息框大小
    Const XD_Height="20"
    Class Xdownpage
    Private XD_PageCount,XD_Conn,XD_Rs,XD_SQL,XD_PageSize,Str_errors,int_curpage,str_URL,int_totalPage,int_totalRecord

    '=================================================================
    '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

    int_totalRecord=XD_RS.RecordCount
    If int_totalRecord<=0 Then
    str_error=str_error & "总记录数为零,请输入数据"
    Call ShowError()
    End If
    If int_totalRecord<PAGESIZE Then
    int_TotalPage=1
    Else
    If int_totalRecord mod PageSize =0 Then
    int_TotalPage = Int(int_TotalRecord / XD_PageSize * -1)*-1
    Else
    int_TotalPage = Int((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 "<TABLE width="&XD_Width&" border=0><TBODY><TR><FORM><TD align="&XD_Align&" height="&XD_Height&">"
    str_tmp=ShowFirstPrv
    response.write str_tmp
    str_tmp=showNumBtn
    response.write str_tmp
    str_tmp=ShowNextLast
    response.write str_tmp
    str_tmp=ShowPageInfo
    response.write str_tmp
    'Response.write "</TD><TD>"
    ShowGoto
    response.write "</TD></FORM></TR></TBODY></TABLE>"

    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 title=首页 href="&geturl&" 1>"&Btn_First&"</A> <A title=上一页 href="&geturl & 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 title=下一页 href="& geturl & int_NextPage &">"&Btn_Next&"</A> <A? title=最末页 href="&geturl & int_totalpage &">"& Btn_Last&"</A>"
    End If
    ShowNextLast=str_tmp
    End Function


    '====================================================================
    'ShowNumBtn 数字导航
    '
    '
    '====================================================================
    'Private Function showNumBtn()
    ' Dim i,str_tmp
    ' For i=1 to int_totalpage
    ' str_tmp=str_tmp & "<A href="& geturl & i &">["&i&"]</A> "
    ' Next
    ' showNumBtn=str_tmp
    '
    'End Function
    '====================================================================
    'ShowNumBtn 修改后的数字导航
    '
    '====================================================================
    Function showNumBtn()
    Dim i,str_tmp,end_page,start_page
    if int_curpage>4 then
    if int_curpage+2<INT_TOTALPAGE then
    start_page=int_curpage-2
    end_page=int_curpage+2
    else
    start_page=int_totalpage-4
    end_page=int_totalpage
    end if
    else
    start_page=1
    if int_totalpage>5 then
    end_page=5
    else
    end_page=int_totalpage
    end if
    end if
    For i=start_page to end_page
    str_tmp=str_tmp & " [<A href="& geturl & i &">"&i&"</A>] "
    Next
    showNumBtn=str_tmp
    End Function

    '====================================================================
    'ShowGoto 页面跳转
    '
    '
    '====================================================================
    Private Function ShowGoto()
    Dim M_item
    '========================================================
    '将返回的Url参数逐个的写入隐藏域中,以便与参数继续传递
    '========================================================
    For Each M_item In Request.QueryString
    If InStr("page",M_Item)=0 Then '从参数中除去 "page" 的值
    Response.Write ""
    End If
    Next
    '========================================================
    response.write " 转到第:<INPUT maxLength=10 size=3 value="&int_curpage&" name=page>"
    response.write " 页 <INPUT type=submit value=Goto>"
    End Function


    '====================================================================
    'ShowPageInfo 分页信息
    '更据要求自行修改
    '
    '====================================================================
    Private Function ShowPageInfo()
    Dim str_tmp
    str_tmp=" [页次:"&int_curpage&"/"&int_totalpage&"页] [共"&int_totalrecord&"条] ["&XD_PageSize&"条/页]"
    ShowPageInfo=str_tmp
    End Function

    '====================================================================
    '修改后的获取当前Url参数的函数
    'Codeing by Redsun
    '====================================================================
    Private Function GetUrl()
    Dim criptAddress, M_ItemUrl, M_item
    criptAddress = CStr(Request.ServerVariables("s cript_NAME"))&"?"'取得当前地址
    If (Request.QueryString <> "") Then
    M_ItemUrl = ""
    For Each M_item In Request.QueryString
    If InStr("page",M_Item)=0 Then
    M_ItemUrl = M_ItemUrl & M_Item &"="& Server.URLEncode(Request.QueryString(""&M_Item&"")) & "&"
    End If
    Next
    criptAddress = criptAddress & M_ItemUrl'取得带参数地址
    End If
    GetUrl = criptAddress & "page="
    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("<FONT #FF0000><B>" & SW_Error & "</FONT>")
    Response.End
    End If
    End Sub

    End class



    网上提供的源码有点错误,可能是转录后人为的修改出现的错误,我稍做修改修饰了一下:
    <%
    '==================================================
    'XDOWNPAGE ASP版本
    '版本 1.00
    'Code by zykj2000
    'Email: zykj_2000@163.net
    'BBS: http://bbs.513soft.net
    '本程序可以免费使用、修改,希望我的程序能为您的工作带来方便
    '但请保留以上请息
    '===================================
    ' 显示仿BleaIdea的分页栏风格 R.Koo 修改
    '===================================
    '
    '程序特点
    '本程序主要是对数据分页的部分进行了封装,而数据显示部份完全由用户自定义,
    '支持URL多个参数
    '
    '使用说明
    '程序参数说明
    'PapgeSize 定义分页每一页的记录数
    'GetRS 返回经过分页的Recordset此属性只读
    'GetConn 得到数据库连接
    'GetSQL 得到查询语句
    '程序属性说明
    'ShowPage 显示分页导航条,唯一的属性
    '
    '例:
    '包含文件
    ' Set mypage=new xdownpage '创建对象
    ' mypage.getconn=conn '得到数据库连接
    ' mypage.getsql="select * from productinfo order by id asc"
    ' mypage.pagesize=5 '设置每一页的记录条数据为5条
    ' set rs=mypage.getrs() '返回Recordset
    ' for i=1 to mypage.pagesize '接下来的操作就和操作一个普通Recordset对象一样操作
    ' if not rs.eof then '这个标记是为了防止最后一页的溢出
    ' Response.Write & rs(0) & "" '这里就可以自定义显示方式了
    ' rs.movenext
    ' else
    ' exit for
    ' end if
    ' next
    ' response.write mypage.showpage 显示分页信息,在set rs=mypage.getrs()以后


    '=====================================================
    Const Btn_First="<font face=""webdings"">9</font> " '定义第一页按钮显示样式
    Const Btn_Prev="<font face=""webdings"">7</font> " '定义前一页按钮显示样式
    Const Btn_Next="<font face=""webdings"">8</font> " '定义下一页按钮显示样式
    Const Btn_Last="<font face=""webdings"">:</font> " '定义最后一页按钮显示样式

    Class Xdownpage
    Private XD_PageCount,XD_Conn,XD_Rs,XD_SQL,XD_PageSize,Str_errors,int_curpage,str_URL,int_totalPage,int_totalRecord,str_error,SW_Error
    '=========================================
    '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

    '==============================
    ' 显示仿BleaIdea的分页栏风格 R.Koo 修改
    '=============================
    Public Function ShowPage()
    Dim Str_tmp,str_fisrt,str_prev,str_next,str_last,str_info,str_select,i
    int_totalRecord=XD_RS.RecordCount
    If int_totalRecord<=0 Then
    str_error=str_error & "总记录数为零,请输入数据"
    Call ShowError()
    End If
    If int_totalRecord>0 Then 'int_TotalPage=1
    If int_totalRecord mod PageSize =0 Then
    int_TotalPage = CLng(int_TotalRecord \ XD_PageSize )
    Else
    int_TotalPage = CLng(int_TotalRecord \ XD_PageSize )+1
    End If
    End If
    If Int_curpage>int_Totalpage Then
    int_curpage=int_TotalPage
    End If

    If int_curpage=1 Then
    str_fisrt=Btn_First&"首页"
    str_prev=Btn_Prev&"前页"
    Else
    str_fisrt=Btn_First&"<a href="""&geturl&"1"&""">首页</a>"
    str_prev=Btn_Prev&"<a href="""&geturl&int_curpage-1&""">前页</a>"
    End If

    If int_curpage>=int_totalpage Then
    str_next=Btn_Next&"后页"
    str_last=Btn_Last&"尾页"
    Else
    str_next=Btn_Next&"<a href="""&geturl&Int_curpage+1&""">后页</a>"
    str_last=Btn_Last&"<a href="""&geturl&int_totalpage&""">尾页</a>"
    End If
    str_select="<select style=""font:8pt;"" onchange=""if(this.options[this.selectedIndex].value!=''){location=this.options[this.selectedIndex].value;}"">"
    For i=1 to int_totalpage
    str_select=str_select&"<option value="""&geturl&i&""""
    if int_curpage=i then str_select=str_select&" selected" 'str_tmp=str_tmp & "["&i&"]" else str_tmp=str_tmp & "<a href="""&geturl&i&""">["&i&"]</a>"
    str_select=str_select&">"&i&"</option>"
    Next
    str_select=str_select&"</select>"
    str_info="&nbsp;&nbsp;&nbsp;&nbsp;共<B>"&int_totalrecord&"</B>个记录&nbsp;&nbsp;页次:<B>"&Int_curpage&"</B>/<B>"&int_totalpage&"</B>&nbsp;&nbsp;页&nbsp;&nbsp;<B>"&XD_PageSize&"</B>条/页&nbsp;&nbsp;转到:"&str_select&"页"
    ShowPage = str_fisrt &"&nbsp;&nbsp;"& str_prev &"&nbsp;&nbsp;"& str_next &"&nbsp;&nbsp;"& str_last &"&nbsp;&nbsp;"& str_info
    End Function

    '================================================
    'GetURL 得到当前的URL
    '更据URL参数不同,获取不同的结果
    '================================================
    Private Function GetURL()
    Dim strurl,str_url,i,j,search_str,result_url,str_params
    search_str="page="

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

    str_params=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 ("<div align=""center"">出错了<BR><BR><a href="""">返回</a></div>")
    Response.End
    End If
    End Sub
    End class
    %>
  • 相关阅读:
    Add a column in table control
    ALV
    ABAP Object Differences
    Field Symbols, Casting Decimal Places
    fROM PPV report
    python全局变量
    管理商品demo
    Mac系统在Pycharm中切换解释器
    python中 元组
    python中字符串格式化
  • 原文地址:https://www.cnblogs.com/MaxIE/p/407572.html
Copyright © 2011-2022 走看看