请教一个分页逻辑
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教一个分页逻辑相关的知识,希望对你有一定的参考价值。
传入参数1.从第几条取 2.取多少条
我传给他在这个范围内的表数据,并告诉他还有没有剩余的数据
请问怎么做。。。。
totalCount:select count(*) from tableName where ...
总页数:totalCont/pageRecords,此时需要做一个判断,如果余数大于零,需要在商的结果上+1
起始记录索引:pageRecoords*(curPage-1)+1
终止记录索引:pageRecoords*curPage
注:上述的起止索引是以从1开始的算法,根据数据库实际情况进行调整。
相信有了上述几个数据,其余的功能也就是把这些数据汇总利用一下的事情了。 参考技术A <%
'PID 页面中的其它传参连接
'page 要显示的页码
'Vcount 总记录数
'Pnum 每页记录数
'className 超连接样式
public function ThePage(Pid,page,Vcount,Pnum,className)
dim show
page = int(page)
Pcount = abs(int(-abs(Vcount/Pnum)))
if page = "" or page <= 0 then page = 1
if page>Pcount then page=Pcount
StartPageNum=1
do while StartPageNum+10<=page
StartPageNum=StartPageNum+10
Loop
EndPageNum=StartPageNum+9
If EndPageNum>Pcount then EndPageNum=Pcount
show = show&"<tr><td colspan='10' bgcolor='' align='right' style='padding-right:25px;padding-top:5px;' class='"&className&"'>"
show = show&"共<b>"&Pcount&"</b>页 共有<b>"&Vcount&"</b>记录 第<b>"&page&"</b>页 跳到第 [ "
if StartPageNum>1 then
show = show&"<a class='"&className&"' href='?"&Pid&"page="&StartPageNum-1&"' title='前十页'><font face='webdings'>7</font></a>"
end if
For go=StartPageNum to EndPageNum
if go<>page then
show = show&"<a class='"&className&"' href='?"&Pid&"page="&go&"'>"&go&"</a>"
else
show = show&"<b>"&go&"</b>"
end if
show = show&" "
Next
if EndPageNum<Pcount then
show = show&"<a class='"&className&"' href='?"&Pid&"page="&EndPageNum+1&"' title='下十页'><font face='webdings'>8</font></a>"
end if
show = show& "] 页"
if page<>1 then
show = show&"<a class='"&className&"' href='?"&Pid&"page=1'> 首页</a> <a class='"&className&"' href='?"&Pid&"page="&page-1&"'>上一页</a>"
end if
if Pcount-page <> 0 then
show = show& "<a class='"&className&"' href='?"&Pid&"page="&page+1&"'> 下一页</a> <a class='"&className&"' href='?"&Pid&"page="&Pcount&"'>尾页</a>"
end if
show=show&"</tr></td>"
ThePage = show
end function
%>
<table cellpadding="0" cellspacing="0">
<tr class="bg_table"> <td>文章的ID </td> <td>文章标题</td> <td>文章修改</td> <td>文章删除 </td> <td>选择</td></tr>
<%
dim conn1,page
set conn1=server.CreateObject("adodb.connection")
conn1.open "driver=microsoft access driver (*.mdb);dbq="&server.MapPath("/mdb/Article.mdb")
sub conn1_close()
set conn1=nothing
end sub
'分页参数设置
page = request.querystring("page")
if page = "" then page = 1
page = int(page)
Pnum = 15
className = "lwf"
PID = ""
'以下不变
set rs=server.CreateObject("adodb.recordset")
sql="select id,title from news"
rs.open sql,conn1,1,1
Vcount = RS.recordcount
if RS.recordcount <> 0 then
RS.absoluteposition=RS.absoluteposition+((abs(page)-1)*Pnum)
end if
'********************************
i = 1
while not RS.eof and i<=Pnum
%>
<tr> <td class="news_id"><%=rs("id")%> </td> <td class="news_title"><%=rs("title")%></td> <td class="news_update"><a href="update_news.asp?id=<%=rs("id")%>">修改</a></td><td class="news_delete"><a href="delete_news.asp">删除</a></td><td class="news_select"><form><input type="checkbox" /></form></td></tr>
<%
rs.movenext
i = i + 1
wend
rs.close
set rs = nothing
%>
<tr><td colspan="3"></td> <td><label id="all_select">全选:</label><input type="checkbox" id="all_select" /> </td> <td><label id="part_select">反选:</label><input type="checkbox" id="part_select" /> </td></tr>
</table>
<div id="end">
<p>
<%=ThePage(Pid,page,Vcount,Pnum,className)%>
</p>
</div>
===================
上面是一个分页函数例用的例子你参考下
主要的分页逻辑就是这部分
rs.open sql,conn1,1,1
Vcount = RS.recordcount
if RS.recordcount <> 0 then
RS.absoluteposition=RS.absoluteposition+((abs(page)-1)*Pnum)
end if 参考技术B 32位是实地址指的是该系统地址总线为32条,而48位是虚拟地址,2^48是虚拟地址空间,实际的内存大小是2^32即4GB存储空间。还有啊 2^36/4kb=2^24 不是1M吧 是16M吧。再好好看看书 详细看看多级也表那部分 然后问问老师……
关于window.print 打印时不能精确的分页,请教高手常用的解决方案?
在一个JSP页面上有若干条没有规律的内容,打印出来也会分很多页,一般有10页左右的内容,发现打印出来的内容在分页前或分页后会缺少内容,在网上查过原因是PRINT方法不能精确的分页。请教高手们长用的解决方法。
用ie9+,不要用低版本的浏览器追问感谢你的回答,不过我们公司要求统一用IE8,这个应该是换不了的。
在IE8之前,对于这样的问题一般是怎么解决的?
我这里想通过计算打印的内容,通过行数判断在固定的位置插入分页符来实现。
但这个方法比较麻烦,而且担心这个方法会因为打印驱动的原因,在不同的机器上看到的效果不一样。有没有更好的解决方法?
这个很难统一,即使ie8没事 ie7可能会有问题!我测试过很多次,每个浏览器都不同!ie9算表现好的,别的暂时只能在程序里面手调,这个也是最麻烦的!
参考技术A IE9 +,不使用低版本的浏览器追问感谢你的回答,不过我们公司要求统一用IE8,这个应该是换不了的。
在IE8之前,对于这样的问题一般是怎么解决的?
我这里想通过计算打印的内容,通过行数判断在固定的位置插入分页符来实现。
但这个方法比较麻烦,而且担心这个方法会因为打印驱动的原因,在不同的机器上看到的效果不一样。有没有更好的解决方法?
以上是关于请教一个分页逻辑的主要内容,如果未能解决你的问题,请参考以下文章