asp分页技术详解讲解(上一页/下一页)
先我们来理解一下原理
首页:
这个使用当前页是否为第一页时判别,如果当前为第一页(也就是首页),那么显示首页两字,没有链接,否则提供直接跳转到首页的链接。
上一页:
当前为第一页时,链接失效,反过来,链接到当前面的上一页,这里使用:<%=curpage-1%>,就是用当前的页数减去1,得到上一页。
下一页:
这里需要使用rs.pagecount这个属性来比较,假如总页数小于当前页数加1的值,那表明这就是第后一页,链接将失效,否则链接到下一页。
尾页:
和下一页的功能一样判定出是最后页时链接失效,否则将当前页指定为rs.pagecount(总页数)。
知道上面的东西了,我们就可以根据要求进行分页代码了。
在需要显示页码的页面:
实例1
代码如下 |
复制代码 |
page=cint(request("page")) 'page是url中页码的参数
querys="..." '定义url的其他参数
rs.PageSize=30 '每页条数,自己设定
dim pagecount=rs.PageCount
rs.AbsolutePage=pageno
if pagecount>1 then
response.write("分页: ")
outpages pagecount,page ''''''此处'显示页码,函数见后
response.write "<br><br>"
end if
dim showcount=0
do while (not rs.eof and showcount<rs.PageSize )
显示每条内容
showcount=showcount+1
rs.movenext
loop
|
'以下为显示页码的函数,可单独放在一个文件中:
代码如下 |
复制代码 |
sub outpages(pagecount,curpage)
yyy=int((curpage-1)/10)
startno=yyy*10+1
endno=startno+10-1
if startno<1 then startno=1
if endno>pagecount then endno=pagecount
response.write "<b>"
if startno>1 then
response.write " <a target=_top href=?"&querys&"&page="&(startno-10)&"><<</a> "
end if
for j=startno to endno
if j=page then
response.write " "&j&" "
else
response.write " <a target=_top href='"
response.write "?"&querys&"&page="&j
response.write "'>["&j&"]</a> "
end if
next
if pagecount>endno then
response.write " <a target=_top href=?"&querys&"&page="&(endno+1)&">>></a>"
end if
response.write "</b>"
end sub
|
实例2
代码如下 |
复制代码 |
<%
set conn=server.createobject("adodb.connection")
conn.open("DRIVER=Driver do Microsoft Access (*.mdb);UID=admin;pwd=;dbq="&server.mappath("1.mdb"))
set rs=server.createobject("adodb.recordset")
sql="select * from student"
rs.open sql,conn,3
rs.pagesize=20
if request("page")<>"" then
epage=cint(request("page"))
if epage<1 then epage=1
if epage>rs.pagecount then epage=rs.pagecount
else
epage=1
end if
rs.absolutepage=epage
%>
<table border="0" cellpadding="0" cellspacing="1" bgcolor="#0000FF" width="80%" align="center">
<tr bgcolor="#FFFFFF" align="center">
<th><%=rs(0).name%></th><th><%=rs(1).name%></th><th><%=rs(2).name%></th>
</tr>
<%
for i=0 to rs.pagesize-1
if rs.bof or rs.eof then exit for
%>
<tr bgcolor="#FFFFFF" align="center">
<td><%=rs(0).value%></td><td><%=rs(1).value%></td><td><%=rs(2).value%></td>
</tr>
<%
rs.movenext()
next
%>
</table>
<p align="center">
<a href="">首页</a>
<a href="index.asp?page=<%=epage-1%>">前一页</a>
<a href="index.asp?page=<%=epage+1%>">后一页</a>
<a href="index.asp?page=<%=rs.pagecount%>">末页</a>
</p>
<p align="center">现在是第<%=epage%>页一共有<%=rs.pagecount%>页</p>
<%
conn.close()
%>
|
表有三个字段,表明为student其他的就不需要改了,那个pagesize也可以改一下,如果记录少的话.
在asp中实现分页有几个关键的命令
代码如下 |
复制代码 |
rs.PageSize=30 '每页条数,自己设定
dim pagecount=rs.PageCount
rs.AbsolutePage=pageno
|
这三个是我们asp中分页必须用到的,否则你的分页就不会成功哦,这也是asp的短板了让人摸不差头脑的做法。
补充:asp教程,技巧与性能优化