Mr.King's的专栏

.net疯狂学习中...... 一切从基础开始.
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

利用recordset组件中的一些属性进行分页显示.

Posted on 2005-04-10 00:51  探索  阅读(758)  评论(0编辑  收藏  举报
我知道利用recordset组件中的一些属性进行分页显示占用很多资源,而且效率也不是很高,但是作为刚刚学习ASP不久的我有必要至少把这种低级的方法弄透.
首先要注意的是,如果你要使用recordset组件属性来进行分页显示,必须把建立数据集时其中的一个参数CursorType的取值为1(键盘)指针.
其实是数据集中要利用的属性
PageSize ----------------数据分页显示时每一页的记录数
PageCount---------------数据分页显示时数据页的总数
AbsolutePage------------当前指针所在的数据页

下面是我做的第一个小型的系统图书管理系统中显示图书馆中的全部图书所使用的分页代码:
<!--#include file="Connections/db.asp" -->
<%
dim db
set db=server.CreateObject("adodb.connection")
db.open dbqstring
set rs=server.CreateObject("adodb.recordset")
strsql="select * from books order by classid"
rs.open strsql,db,1,1
%>
<body bgcolor="#6699CC">
<form name="form1" method="post" action="">
  <table width="200" border="1" align="center" cellpadding="1" cellspacing="0" bordercolor="#66CCFF">
    <tr bgcolor="#333333">
      <td colspan="10" nowrap><div align="center">图书馆所藏图书一览表(共<%=rs.RecordCount%>条记录)</div></td>
    </tr>
    <tr bgcolor="#006699">
      <td nowrap><div align="center">书号</div></td>
      <td nowrap><div align="center">分类号</div></td>
      <td nowrap><div align="center">书名</div></td>
      <td nowrap><div align="center">作者</div></td>
      <td nowrap><div align="center">价格</div></td>
      <td nowrap><div align="center">数量</div></td>
      <td nowrap><div align="center">出版社</div></td>
      <td nowrap><div align="center">出版日期</div></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
<%
dim page_size
dim page_no
dim page_total
page_size=5                 '******************设置每页显示5条记录
if request.QueryString("page_no")="" then
page_no=1
else
page_no=cint(request.querystring("page_no"))
end if
rs.pagesize=page_size   '******************将这个数字付值recordset对象的属性
page_total=rs.pagecount    '****************得到一共有多少页
rs.absolutepage=page_no  '****************设置当前页为传过来请求的要显示的页面
dim i
i=page_size
do while not rs.eof and i>0
i=i-1
%>
<tr>
      <td nowrap><div align="center"><%=rs("book_NO")%></div></td>
      <td nowrap><div align="center"><%=rs("sort_NO")%></div></td>
      <td nowrap><div align="center"><%=rs("book_name")%></div></td>
      <td nowrap><div align="center"><%=rs("author")%></div></td>
      <td nowrap><div align="center"><%=rs("price")%></div></td>
      <td nowrap><div align="center"><%=rs("amount")%></div></td>
      <td nowrap><div align="center"><%=rs("publish")%></div></td>
      <td nowrap><div align="center"><%=rs("publish_date")%></div></td>
      <td nowrap><a href="update_booksinfo.asp?classid=<%=rs("classid")%>">编辑</a></td>
      <td nowrap><a href="delbook.asp?classid=<%=rs("classid")%>">删除</a></td>
    </tr>
<%
rs.movenext
loop
%></table>
<center>
<span>
<%
'**************************用下面代码实现具体去的哪一页************************
response.Write("<p>请选择数据页:")
for i=1 to page_total
if i=page_no then
response.Write( i&"&nbsp")
else
response.Write("<a href='showbooks.asp?page_no="&i&"'>"&i&"</a>&nbsp")
end if
next

'**************************用下面方法可以实现不用选择页数,而是翻到下一页******************
if page_no<page_total then
response.Write("<br><a href='showbooks.asp?page_no="&page_no+1&"'>下一页</a>")
else
response.Write("<br>末页</a>")
end if

'**************************用下面方法可以实现不用选择页数,而是翻到上一页******************
if page_no>1 then
response.Write("<br><a href='showbooks.asp?page_no="&page_no-1&"'>上一页</a>")
else
response.Write("<br>首页</a>")
end if

'**************************用下面方法可以实现不用选择页数,可以到达最后一页****************
response.Write("<br><a href='showbooks.asp?page_no="&page_total&"'>最后一页</a>")

'**************************用下面方法可以实现不用选择页数,可以到达最后一页****************
dim a
a=1
response.Write("<br><a href='showbooks.asp?page_no="&a&"'>首页</a>")
%>
</span>
</center>
</form>
</body>

虽然这个比较简单,但是初学者也要把它完全弄清楚.否则更加谈不上学习效率更高,占用资源更好的方法.
Google