| 一个通用分页类 |
|
作者: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&">页 " 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&" "&str_Turn_First&" "&str_Turn_Prev Else PSC_Str_Temp=PSC_Str_Temp&" <a href=?Page=1"&PSC_Key&">"&str_Turn_First&"</a> <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&" "&str_Turn_Next & " " & str_Turn_Last Else PSC_Str_Temp=PSC_Str_Temp&" <a href=?Page="&PSC_CurPage+1&PSC_Key&">"&str_Turn_Next&"</a> <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&" <a href='?page=1"&PSC_Key&"'>"&str_Turn_First&"</a> <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&" <font color=#990000><b>"&PSC_PI&"</b></font>" else PSC_Str_Temp=PSC_Str_Temp&" <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&" <a href='?page="&PSC_PN*PSC_PP+1&PSC_Key&"'>"&str_Turn_Next&"</a> <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 |
|
上一篇文章: asp分页显示详论
下一篇文章: 搜索引擎优化:用ISAPI_Rewrite实现asp的静态化 |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |