设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 50|回复: 7
打印 上一主题 下一主题

请教一个分页函数的修改~~

[复制链接]
跳转到指定楼层
1#
发表于 2010-1-11 02:53:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
函数如下:

预览:http://www.2282600.cn/houtai/page.asp
支持自定义显示页码的个数,并首先会保证页码的个数
支持自定义上一页下一页字符
支持是否显示数据分页信息,如总共多少页
支持是否下拉列表转向分页
支持是否输入框转向分页,自动判断数字
支持自定义接收页码变量名,默认为page
<%
sql=""
Set Rs=Server.CreateObject("Adodb.RecordSet")
Rs.open Sql,TXconn,1,1
If Rs.RecordCount Then

        TopNum=10        '定义每页显示多少条
        QName="Page"        '定义接收页码的变量名

        Page=Request.QueryString(QName)
        If Page="" Then
                Page=1
        ElseIf Not IsNumeric(Page) Then
                Page=1
        Else
                Page=Page+0
        End if
        MaxPage=Fix(Rs.RecordCount/TopNum)
        If (Rs.RecordCount mod TopNum) Then MaxPage=MaxPage+1
        If Page>MaxPage Then Page=MaxPage
        Rs.PageSize=TopNum
        Rs.AbsolutePage = Page

        For i=1 to TopNum
                If Rs.bof or Rs.eof Then Exit For
                        Response.write(i&"<br />")
                Rs.MoveNext
        Next
Else
        Response.write("no data")
End If
%>

<%=TXPage(Rs.RecordCount,TopNum,2,0,0,0,QName)%>

<%
Function TXPage(Totals,PerNums,PageNum,Info,List,Input,QName)
'分页函数(所有数量,每页显示记录数,页码个数,页码统计信息,下拉列表,输入框,页码变量名[为空则为Page])
        Dim strBegin,strBefore,strPrev,strNext,strAfter,strEnd,BeginNum,EndNum,Page,Pages,Url
        strBegin="<font face=""webdings"">9</font>"  '定义第一页按钮显示样式
        strBefore="<font face=""webdings"">7</font>"  '定义上几页按钮显示样式
        strPrev="<font face=""webdings"">3</font>"  '定义前一页按钮显示样式
        strNext="<font face=""webdings"">4</font>"  '定义下一页按钮显示样式
        strAfter="<font face=""webdings"">8</font>"  '定义后几页按钮显示样式
        strEnd="<font face=""webdings"">:</font>"  '定义最后一页按钮显示样式
        
        PageNum=Fix(PageNum/2)
        If QName="" Then QName="Page"
        Page=Request.QueryString(QName)
        Url="?"
        Dim Query,str,i
        Query=Split(Request.ServerVariables("QUERY_STRING"),"&")
        For i=0 to Ubound(Query)
                Str=Split(Query(i),"=")
                If Lcase(Str(0))<>Lcase(QName) Then Url=Url&Str(0)&"="&Str(1)&"&"
        Next
        PerNums=PerNums+0
        If Totals mod PerNums Then
                Pages=Fix(Totals/PerNums)+1
        Else
                Pages=Fix(Totals/PerNums)
        End If
        If IsNumeric(Page) Then
                Page=Page+0
                If Page>Pages Then
                        Page=Pages
                ElseIf Page<1 Then
                        Page=1
                End If
        Else
                Page=1
        End If
        
        TXPage=""
        BeginNum=Page-PageNum
        EndNum=Page+PageNum
        If BeginNum<1 Then BeginNum=1
        If EndNum-BeginNum<PageNum*2 Then EndNum=BeginNum+PageNum*2
        If EndNum>Pages Then EndNum=Pages
        If EndNum-BeginNum<PageNum*2 Then BeginNum=EndNum-PageNum*2
        If BeginNum<1 Then BeginNum=1
        If BeginNum>PageNum*2 and PageNum>1 Then TXPage=TXPage&"<a href="""&Url&QName&"="&Page-PageNum*2&"""

Title=""前"&PageNum*2&"页"">"&strBefore&"</a>"
        If BeginNum>1 Then TXPage="<a href="""&Url&QName&"=1"" Title=""第一页"">"&strBegin&"</a>"&TXPage&"<a

href="""&Url&QName&"="&Page-1&""" Title=""上一页"">"&strPrev&"</a>.."
        For i=BeginNum to EndNum
                If i=Page Then
                        TXPage=TXPage&"[<span style=""cursor:pointer;font-weight:bold;"">"&i&"</span>]"
                Else
                        TXPage=TXPage&"[<a href="""&Url&QName&"="&i&""">"&i&"</a>]"
                End If
        Next
        If EndNum<Pages Then TXPage=TXPage&"..<a href="""&Url&QName&"="&Page+1&""" Title=""下一页"">"&strNext&"</a>"
        If EndNum<Pages-PageNum*2 and PageNum>1 Then TXPage=TXPage&"<a href="""&Url&QName&"="&Page+PageNum*2&""" Title=""

后"&PageNum*2&"页"">"&strAfter&"</a>"
        If EndNum<Pages Then TXPage=TXPage&"<a href="""&Url&QName&"="&Pages&""" Title=""最末页"">"&strEnd&"</a>"
        If Info Then TXPage=TXPage&" 页次:"&Page&"/"&Pages&"页 共"&Totals&"条 "&PerNums&"条/页"
        If List Then
                TXPage=TXPage&" <select onChange=""javascript:window.location.href='"&Url&QName&"='+this.options

[this.selectedIndex].innerText;"">"
                For i=1 to Pages
                        TXPage=TXPage&"<option"
                        If i=Page Then TXPage=TXPage&" selected"
                        TXPage=TXPage&">"&i&"</option>"
                Next
                TXPage=TXPage&"</select>"
        End If
        If Input Then TXPage=TXPage&" <input type=""text"" size=""1"" Title=""输入号码后,按回车即可""

style=""overflow:visible;ime-mode:disabled;"" onkeydown=""javascript:if

('.8.13.37.39.46.48.49.50.51.52.53.54.55.56.57.96.97.98.99.100.101.102.103.104.105.'.indexOf('.'+event.keyCode+'.')>=0){if

(event.keyCode==13){window.location.href='"&Url&QName&"='+value;}}else{return false;}"">"
End Function
%>



问题如下:

就是如何如何调用啊~

是不是(我的表名是 news, 题目是 news_head)


<%
sql=""
这改成

<!--#include file="conn.asp"-->
<%
exec="select * from  news  order by news_time desc "
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
If Rs.RecordCount Then

        TopNum=10        '定义每页显示多少条
        QName="Page"        '定义接收页码的变量名
..........
..........

(event.keyCode==13){window.location.href='"&Url&QName&"='+value;}}else{return false;}"">"
End Function
%>

可是新闻题目列表news_head写在哪,该如何以列表形式显示出来啊? 请求大家的帮助~
2#
发表于 2010-1-11 02:53:54 | 只看该作者
百万数据只有使用存储过程效率才能提高
回复 支持 反对

使用道具 举报

3#
发表于 2010-1-11 02:53:58 | 只看该作者
老大,您的分页代码在百万数据的测试下
是不是分页显示速度会变的很慢呢???
回复 支持 反对

使用道具 举报

4#
发表于 2010-1-11 02:54:02 | 只看该作者
感谢斑竹,不过您的代码通过百万数据的测试吗?
是不是大数据下 分页显示速度会变的很慢呢???
回复 支持 反对

使用道具 举报

5#
发表于 2010-1-11 02:54:06 | 只看该作者
下面这个算是使用了存储过程的吗?

intTotalRecords = rs.RecordCount
rs.PageSize = intPageSize
intTotalPages = rs.PageCount
If intCurrentPage > intTotalPages Then intCurrentPage = intTotalPages
If intTotalRecords > 0 Then rs.AbsolutePage = intCurrentPage
strOut(0) = strOut(0) & "共 " & intTotalRecords & " 条记录 "
strOut(0) = strOut(0) & "共 " & intTotalPages & " 页 "
strOut(0) = strOut(0) & "当前第 " & intCurrentPage & " 页 "
If intCurrentPage <> 1 And intTotalRecords <> 0 Then
strOut(0) = strOut(0) & "<a href=""?pageNum=1""><<首页</a> "
Else
strOut(0) = strOut(0) & "<<首页 "
End If
If intCurrentPage > 1 Then
strOut(0) = strOut(0) & "<a href=""?pageNum=" & intCurrentPage - 1 & """><上一页</a> "
Else
strOut(0) = strOut(0) & "<上一页 "
End If
If intCurrentPage < intTotalPages Then
strOut(0) = strOut(0) & "<a href=""?pageNum=" & intCurrentPage + 1 & """>下一页></a> "
Else
strOut(0) = strOut(0) & "下一页> "
End If
If intCurrentPage <> intTotalPages Then
strOut(0) = strOut(0) & "<a href=""?pageNum=" & intTotalPages & """>尾页>></a>"
Else
strOut(0) = strOut(0) & "尾页>>"
End If
回复 支持 反对

使用道具 举报

6#
发表于 2010-1-11 02:54:10 | 只看该作者
http://bbs.bccn.net/viewthread.php?tid=37557&extra=page%3D1%26amp%3Bfilter%3Ddigest
给楼主推荐我写的分页类绝对的简单灵活,修改方便,除了不支持自定义页码数之外,数据显示方式等完全可以自定义。
回复 支持 反对

使用道具 举报

7#
发表于 2010-3-3 15:05:07 | 只看该作者
强烈支持。楼主万岁
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-20 15:24 , Processed in 0.224433 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表