实例一:分页显示及导航:
为什么我要再提分页的这个问题呢?因为这是一个最基本的问题,虽然有很多关于分页的文章,但我觉得他们的方法偏于复杂。其实recordset的absolutepage就可以轻松的实现分页,当你指定了pagesize属性后,对absolutepage指定值就可以翻转到指定的页面。但是如果你想使用absolutepage的话,你必须在打开recordset对象之前将它的cursorlocation值设为aduseclient,这个属性是继承connection对象的一个相同属性的。你也可以在打开connection对象之前来设定它。下面是源代码,为了方便,我将导航栏独立成了一个子程序方便大家使用。
<%
sub navigator(pageno,target)
response.write "<table border=0>"
response.write "<tr>"
response.write "<td>"
if pageno>1 then
response.write "<a href="&chr(34)&target&"?page=1"&chr(34)&">┃第一页</a>"
else
response.write "┃第一页"
end if
response.write "</td>"
response.write "<td>"
if pageno<rs.pagecount then
response.write"<a href="&chr(34)&target&"?page="&pageno+1&chr(34)&">┃下一页</a>"
else
response.write "┃下一页"
end if
response.write "</td>"
response.write "<td>"
if pageno>1 then
response.write "<a href="&chr(34)&target&"?page="&pageno-1&chr(34)&">┃前一页</a>"
else
response.write "┃前一页"
end if
response.write "</td>"
response.write "<td>"
if pageno<rs.pagecount then
response.write "<a href="&chr(34)&target&"?page="&rs.pagecount&chr(34)&">┃最后一页</a>"
else
response.write "┃最后一页"
end if
response.write "</td>"
response.write "<td>"
response.write "┃页次:"&pageno&"/"&rs.pagecount&"页┃"&rs.pagesize&"条记录/页┃"
response.write "</td>"
response.write "<td valign="middle">"
response.write "<form action="&chr(34)&target&chr(34)&" method="&chr(34)&"post"&chr(34)&">"
response.write "<input type="text"size=3 maxlength=4 name="page">"
response.write " <input type="submit"value="转到">"
response.write "</form>"
response.write "</td>"
response.write "</tr>"
response.write "</table>"
end sub
%>
<%
const adcmdtext=&h0001
const advarchar=200
const adinteger=3
const adparaminput=&h0001
const adcmdtable=&h0002
const aduseclient=3
const addate=7
const adlongvarchar=201
set conn=server.createobject("adodb.connection")
conn.connectionstring="driver={microsoft access driver (*.mdb)};dbq="& _
server.mappath("/source_asp")&"/process/process.mdb;"
conn.open
%>
<%
const maxpagesize=5
%>
<html>
<head>
<title> see book </title>
</head>
<body>
<%
dim i,j,pageno
set rs=server.createobject("adodb.recordset")
rs.activeconnection=conn
rs.cursorlocation=aduseclient
rs.open "select * from books",,,adcmdtext
if rs.bof then
response.write "欢迎使用图书,资料管理程序!"
else
rs.pagesize=maxpagesize
if isempty(request.querystring("page")) then
pageno=1
elseif cint(request.querystring("page"))<1 then
pageno=1
elseif cint(request.querystring("page"))>rs.pagecount then
pageno=rs.pagecount
else
pageno=cint(request.querystring("page"))
end if
if request.servervariables("request_method")="post" and not isempty(request.form("page")) then
pageno=cint(request.form("page"))
end if
rs.absolutepage=pageno
response.write "<table border="0" width="100%">"
response.write "<tr><td colspan="&rs.fields.count&">"
target="books.asp"
call navigator(pageno,target) "调用导航栏
response.write "</td></tr>"
response.write "<tr>"
for i=0 to rs.fields.count-1
response.write "<td>"&rs.fields.item(i).name&"</td>"
next
response.write "</tr>"
j=0
while (not rs.eof) and j<rs.pagesize
response.write "<tr>"
for i=0 to rs.fields.count-1
if i=1 then
response.write "<td>"&"<a href="&chr(34)&"status.asp?bookname="& _
rs.fields.item(i).value&chr(34)&">"&rs.fields.item(i).value&"</a></td>"
"这里这样写是为了级联式查询而做的。
else
response.write "<td>"&rs.fields.item(i).value&"</td>"
end if
next
response.write "</tr>"
rs.movenext
j=j+1
wend
response.write "</table>"
end if
%>
