利用ASP实现对表的分页浏览(上)
2018-09-06 12:41
大家都知道,ASP有着强大的数据库操作能力,这与她能方便的调用ActiveX对象是密不可分的。下面我给大家介绍一种ASP利用ADO对象实现对数据库记录分页显示的方法。以下代码均在WIN98+PWS+MSaccess(小型网站之最爱)环境下通过。
在这里我主要通过ADO对象集中的Recordset对象来实现各种数据库操作的。先介绍几个用于分页显示的Recordset属性。
PageSize:每页显示的记录数。
PageCount:根据用户设好的PageSize和表中的总记录数,系统自动算出总页数。
RecordCount:表中的总记录数。
AbsolutePage:表示当前页码。如将AbsolutePage属性设为3,则当前记录移至第3页第1条(也就是第31条)。
看到Recordset有了这几个属性后,相信大家也都觉得做一个分页显示的程序是很简单的。下面讲一下思路,所有实现这一功能的代码都放在display.asp中,按执行的顺序分别是:打开数据库及表、读取用户要求的显示方式、设定好PageSize和AbsolutePage、将内容输出到浏览器、设定好导航条。以下是代码:
<%---------------------------打开数据库及表
filepath=server.mappath(abc.mdb) -------假设数据库文件是abc.mdb
conn.Open driver={Microsoft access(小型网站之最爱) Driver (*.mdb)};dbq= filepath
set rs=server.createobject(ADODB.Recordset)
rs.open main,conn,3,2 -------假设表的名字是main
%>
<%---------------------------读取用户要求的显示方式(通过参数传递)
line=cint(request(line))
page=cint(request(page))
%>
<%---------------------------按用户要求设定好显示方式
rs.PageSize=line
rs.AbsolutePage=page
%>
<%---------------------------显示内容%>
<table width=100% border=1>
<tr>
<%for i=0 to rs.Fields.Count-1%>
<td><></td>
<%next%>
</tr><%-------以上部分显示表头,即字段名%>
<%for i=1 to rs.PageSize%>
<tr>
<%for j=0 to rs.Fields.Count-1%>
<td><%=rs.Fields(j).value%></td>
<%next%>
</tr>
<%rs.movenext%>
<%if rs.eof then exit for%>
<%next%><%-------以上部分显示表的内容%>
</table>
<%---------------------------导航条%>
<table width=100% ><tr>
<td>
<%if page<>1 then%>
<a href=display.asp?page=1line=<%=line%>>第一页</a>
<%else%>第一页<%end if%>
</td>
<td>
<%if page>1 then%>
<a href=display.asp?page=<%=page-1%>line=<%=line%>>前一页</a>
<%else%>前一页<%end if%>
</td>
<td>
<%if page<rs.PageCount then%>
<a href=display.asp?page=<%=page+1%>line=<%=line%>>下一页
<%else%>下一页<%end if%>
</td>
<td>
<%if page<>rs.PageCount then%>
<a href=display.asp?page=<%=rs.PageCount%>line=<%=line%>>最后一页</a>
<%else%>最后一页<%end if%>
</td><%-------以上四项都需要进行判断:如果在第一页就不提供“第一页”和“前一页”的链接
-------如果在最后一页就不提供“最后一页”和“后一页”的链接%>
<td>
<form method=POST action=display.asp?line=<%=line%>>
请输入页码:<input type=text name=page size=3 value=<%=page%>>
</form>
</td>
<td>
<form method=POST action=display.asp?page=<%=page%>>
请设定每页<input type=text name=line size=3 value=<%=line%>>行
</form>
</td><%-------因为两个表单都只有一个表单域,所以没有提供发送按钮,直接打回车就行了%>
<td>
第<%=page%>页/总<%=rs.PageCount%>页
</td>
</tr></table>
这只是一个最基本的程序,没有进行优化处理,也还有一些bug,下面我们一起来使它更“完美”一些。