| 网站首页 | 建站学院 | 资源下载 | 建站教程 | 图片素材 | 网贝社区 | 
您现在的位置: 网贝建站 >> 建站学院 >> ASP技术 >> 输出打印 >> 正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
没有相关文章
一个通用分页类         ★★★★
一个通用分页类
作者:kiyeer 文章来源:bbs.dvbbs.net 点击数: 更新时间:2005-4-14 16:00:37
曾经看过许多分页的文章,参考其中一些意见,写成一个类,希望能带来方便



<%
'=====================================================================
'代码编写  kiyeer
'Email:   kiyeer@tom.com
'本程序可以免费使用、修改,希望我的程序能给你一定的帮助
'不过希望把修改后程序发送一份给本人,谢谢!
'但请保留以上请息,它并不影响程序执行的速度

'程序特点
'本程序主要是对数据分页的部分进行了封装,而数据显示部份完全由用户自定义,支持URL多个参数

'使用说明
'属性说明
'PageStyle                      定义是否用数字分页显示方式,默认为上下页分面方式
'PageNum                        定义每页显示多少个数字导航页
'PageSize      定义分页每一页的记录数
'GetRS       返回经过分页的Recordset此属性只读
'GetConn      得到数据库连接
'GetSQL       得到查询语句
'GetKey                         得到URL地址参数(搜索信息时必须用)
'方法说明
'ShowPage      显示分页导航条,唯一的公用方法
'=====================================================================


Class PageClass
  Private PSC_Conn,PSC_Rs,PSC_SQL,PSC_PageSize,Err,PSC_FormAction,PSC_PP,Ver 
  Private PSC_Errors,PSC_CurPage,PSC_TotalPage,PSC_TotalRecord,PSC_Key,PSC_Show_Style
  Dim str_Turn_First,str_Turn_Prev,str_Turn_Next,str_Turn_Last
  'Class_Initialize 类的初始化
  '初始化当前页的值
  Private Sub Class_Initialize
 Ver ="Version 1.02"       '设置版本信息
 PSC_PageSize=10        '设定分页的默认值为10
 Err=0                     '初始化错误为0
 PSC_Show_Style=false      '初始化,不用数字分页方式
 PSC_PP=5                  '定义每页显示多少个数字导航页
 str_Turn_First="<font style=""font-family:webdings"" ShowIt=""第一页"">9</font>" '定义第一页按钮显示样式
    str_Turn_Prev="<font style=""font-family:webdings"" ShowIt=""上一页"">7</font>"  '定义前一页按钮显示样式
    str_Turn_Next="<font style=""font-family:webdings"" ShowIt=""下一页"">8</font>"  '定义下一页按钮显示样式
    str_Turn_Last="<font style=""font-family:webdings"" ShowIt=""最后一页"">:</font>" '定义最后一页按钮显示样式
 '获取当前面的页面值
 If request("page")="" Then
  PSC_CurPage=1
 ElseIf not(IsNumeric(request("page"))) Then
  PSC_CurPage=1
 ElseIf CInt(Trim(request("page")))<1 Then
  PSC_CurPage=1
 Else
  PSC_CurPage=CInt(Trim(request("page")))
 End If
  End Sub


  '设置 Terminate 事件。
  Private Sub Class_Terminate  
 PSC_Rs.close
 Set PSC_Rs=nothing
  End Sub


  '属性,设置每一页的分页大小
  Public Property Let PageSize(Int_PageSize)
 If IsNumeric(Int_PageSize) Then
  PSC_PageSize=CLng(Int_PageSize)
 Else
  PSC_Errors=PSC_Errors & "页面大小的参数不正确"
  Err=1
 End If
  End Property


  '属性,设置分页方式
  Public Property Let PageStyle(str_Style)
 PSC_Show_Style=CBool(str_Style)
  End Property


  '属性,设置分页方式
  Public Property Let PageNum(int_PageNum)
 PSC_PP=Cint(int_PageNum)
  End Property


  '属性,返回分页后的记录集
  Public Property Get GetRs()
 Set PSC_Rs=Server.createobject("adodb.recordset")
 PSC_Rs.PageSize=PSC_PageSize
 PSC_Rs.Open PSC_SQL,PSC_Conn,1,1
 If not(PSC_Rs.eof and PSC_Rs.BOF) Then
     PSC_TotalPage=PSC_Rs.pagecount
     PSC_TotalRecord=PSC_Rs.RecordCount
     If PSC_TotalRecord<=0 Then
     PSC_Errors=PSC_Errors & "对不起,没有符合条件的记录"
     Err=2
     End If
     If PSC_CurPage>PSC_TotalPage Then
     PSC_CurPage=PSC_TotalPage
     End If
  PSC_Rs.AbsolutePage=PSC_CurPage
 Else
     PSC_Errors=PSC_Errors & "对不起,没有符合条件的记录"
  Err=3
 End If
 Set GetRs=PSC_Rs
  End Property


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


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


  '设置页面地址参数
  Public Property Let GetKey(Str_key)
    if Trim(Str_key)<>"" then
   PSC_Key=Str_key
   PSC_FormAction=right(PSC_Key,len(PSC_Key)-1) '设置Form转页参数
    end if
  End Property


  '创建分页导航条
  Public Sub ShowPage()
 Dim PSC_Str_Temp
 if Err=0 then
   response.write "<table border=0 width=""100%"" cellpadding=0 cellspacing=2><form name=gotopage method=post action='?"&PSC_FormAction&"'><tr><td align=left style=""font-size:9pt"">"
   PSC_Str_Temp=ShowOtherInfo
   response.write PSC_Str_Temp
   if PSC_Show_Style then
     PSC_Str_Temp=ShowNumStyle
     response.write PSC_Str_Temp
   else
     PSC_Str_Temp=ShowTextStyle
     response.write PSC_Str_Temp
   end if
   response.write " 转到:<input type='text' name='page' size=2 maxLength=3 class='in' value="&PSC_CurPage&">页&nbsp;"
      response.write "<input class=button type='submit' value='GO'>"
   response.write "</td></tr></form></table>"
 end if
  End Sub


  '上下页导航方式
  Private Function ShowTextStyle()
 Dim PSC_Str_Temp
 If PSC_CurPage=1 Then
  PSC_Str_Temp=PSC_Str_Temp&"&nbsp;"&str_Turn_First&"&nbsp;"&str_Turn_Prev
 Else
  PSC_Str_Temp=PSC_Str_Temp&"&nbsp;<a href=?Page=1"&PSC_Key&">"&str_Turn_First&"</a>&nbsp;<a href=?Page="&PSC_CurPage-1&PSC_Key&">"& str_Turn_Prev&"</a>"
 End If
 If PSC_CurPage>=PSC_TotalPage Then
  PSC_Str_Temp=PSC_Str_Temp&"&nbsp;"&str_Turn_Next & "&nbsp;" & str_Turn_Last
 Else
  PSC_Str_Temp=PSC_Str_Temp&"&nbsp;<a href=?Page="&PSC_CurPage+1&PSC_Key&">"&str_Turn_Next&"</a>&nbsp;<a href=?Page="&PSC_TotalPage&PSC_Key&">"&str_Turn_Last&"</a>"
 End If
 ShowTextStyle=PSC_Str_Temp
  End Function


  '数字导航方式
  Private Function ShowNumStyle()
 Dim PSC_Str_Temp,PSC_PN,PSC_PI,PSC_PageNum
 PSC_PI=1
 if PSC_TotalPage mod PSC_PP > 0 then
      PSC_PageNum=PSC_TotalPage\PSC_PP+1
    else
      PSC_PageNum=PSC_TotalPage\PSC_PP
    end if
    if PSC_CurPage mod PSC_PP > 0 then
      PSC_PN=PSC_CurPage\PSC_PP+1
    else
      PSC_PN=PSC_CurPage\PSC_PP
    end if
 if cint(PSC_PageNum)>1 and cint(PSC_PN)<>1 then
      PSC_Str_Temp=PSC_Str_Temp&"&nbsp;<a href='?page=1"&PSC_Key&"'>"&str_Turn_First&"</a>&nbsp;<a href='?page="&(PSC_PN-1)*PSC_PP&PSC_Key&"'>"&str_Turn_Prev&"</a>"
    end if
 for PSC_PI=1+(PSC_PN-1)*PSC_PP to PSC_PN*PSC_PP
      if cint(PSC_PI)>cint(PSC_TotalPage) then exit for
      if cint(PSC_CurPage)=cint(PSC_PI) then
         PSC_Str_Temp=PSC_Str_Temp&"&nbsp;<font color=#990000><b>"&PSC_PI&"</b></font>"
      else
         PSC_Str_Temp=PSC_Str_Temp&"&nbsp;<a href='?page="&PSC_PI&PSC_Key&"' ShowIt=""第"&PSC_PI&"页"">"&PSC_PI&"</a>"
      end if
    next
    if cint(PSC_PageNum)>1 and cint(PSC_PN)<>cint(PSC_PageNum) then
      PSC_Str_Temp=PSC_Str_Temp&"&nbsp;<a href='?page="&PSC_PN*PSC_PP+1&PSC_Key&"'>"&str_Turn_Next&"</a>&nbsp;<a href='?page="&PSC_TotalPage&PSC_Key&"'>"&str_Turn_Last&"</a>"
    end if
 ShowNumStyle=PSC_Str_Temp
  End Function


  '分页的其它信息
  Private Function ShowOtherInfo()
 Dim PSC_Str_Temp
 PSC_Str_Temp="页次:<font color=blue><b>"&PSC_CurPage&"</b></font>/<font color=red><b>"&PSC_TotalPage&"</b></font>页 共<font color=red><b>"&PSC_TotalRecord&"</b></font>条记录 <font color=red><b>"&PSC_PageSize&"</b></font>条/页"
 ShowOtherInfo=PSC_Str_Temp
  End Function


  '获取类错误值
  Public Function Error()
 Error=Err
  End Function


  '获取类错误信息
  Public Function GetErrors()
 GetError=PSC_Errors
  End Function


  '获取类版本信息
  Public Function Version()
 Version=Ver
  End Function
End class
%>

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)