📄 asp教程:ado 存取数据库时如何分页显示.htm
字号:
<P> AbsolutePosition 属性的数值为目前指标相对於第一笔的位置,由 1 算起,即第一笔的 AbsolutePosition 为
1。 </P>
<P> 注意 , 在存取 RecordSet 时,无法保证 RecordSet 每次都以同样的顺序出现。 </P>
<P> 若要启用 AbsolutePosition,必须先设定为使用用户端 cursor( 指针 ), asp 码如下: </P>
<P> rs2.CursorLocation = 3 </P>
<P> 五、 PageCount 属性 </P>
<P> 使用 PageCount 属性,决定 Recordset 对象包括多少“页”的数据。这里的“页”是数据记录的集合,大小等于
PageSize 属性的设定,即使最后一页的记录数比 PageSize 的值少,最后一页也算是 PageCount
的一页。必须注意也并不是所有的数据提供者都支持此项属性。 </P>
<P> 六、 PageSize 属性 </P> PageSize 属性是决定 ADO
存取数据库时如何分页显示的关键,使用它就可以决定多少记录组成一个逻辑上的“一页”。设定并建立一个页的大小,从而允许使用 AbsolutePage
属性移到其它逻辑页的第一条记录。 PageSize 属性能随时被设定。
<P> 七、 RecordCount 属性 </P>
<P> 这也是一个非常常用和重要的属性,我们常用 RecordCount 属性来找出一个 Recordset 对象包括多少条记录。如: <
% totle=RS.RecordCount %> </P> 在了解了 Recordset
对象的以上属性和方法后,我们来考虑一下,如何运用它们来达到我们分页显示的目的。首先,我们可以为 PageSize
属性设置一个值,从而指定从记录组中取出的构成一个页的行数;然后通过 RecordCount 属性来确定记录的总数;再用记录总数除以 PageSize
就可得到所显示的页面总数;最后通过 AbsolutePage
属性就能完成对指定页的访问。好象很并不复杂呀,下面让我们来看看程序该如何实现呢?<BR><BR> 我们建立这样一个简单的 BBS
应用程序,它的数据库中分别有以下五个字段:“ID”,每个帖子的自动编号;“subject”,每个帖子的主题;“name”,加帖用户的姓名;“email”,用户的电子邮件地址;“postdate”,加帖的时间。数据库的
DSN 为“bbs”。我们将显示帖子分页的所有步骤放在一个名为“ShowList()”的过程中,方便调用。程序如下:
<BR><BR>'----BBS 显示帖子分页----<BR>< % Sub ShowList() %><BR><
%<BR>PgSz=20 '设定开关,指定每一页所显示的帖子数目,默认为20帖一页<BR>Set Conn =
Server.CreateObject("ADODB.Connection")<BR>Set RS =
Server.CreateObject("ADODB.RecordSet")<BR>sql = "SELECT * FROM message
order by ID DESC"<BR>'查询所有帖子,并按帖子的ID倒序排列<BR>Conn.Open "bbs"<BR>RS.open
sql,Conn,1,1<BR>If RS.RecordCount=0 then<BR>response.write "< P><
center>对不起,数据库中没有相关信息!< /center><
/P>"<BR>else<BR>RS.PageSize = Cint(PgSz)
'设定PageSize属性的值<BR>Total=INT(RS.recordcount / PgSz * -1)*-1
'计算可显示页面的总数<BR>PageNo=Request("pageno")<BR>if PageNo="" Then<BR>PageNo =
1<BR>else<BR>PageNo=PageNo+1<BR>PageNo=PageNo-1<BR>end if<BR>ScrollAction
= Request("ScrollAction")<BR>if ScrollAction = " 上一页 "
Then<BR>PageNo=PageNo-1<BR>end if<BR>if ScrollAction = " 下一页 "
Then<BR>PageNo=PageNo+1<BR>end if<BR>if PageNo < 1 Then <BR>PageNo =
1<BR>end if<BR>n=1<BR>RS.AbsolutePage = PageNo<BR>Response.Write "<
CENTER>"<BR>position=RS.PageSize*PageNo<BR>pagebegin=position-RS.PageSize+1<BR>if
position < RS.RecordCount then<BR>pagend=position<BR>else <BR>pagend=
RS.RecordCount<BR>end if <BR>Response.Write "< P>< font
color='Navy'>< B>数据库查询结果:< /B>"<BR>Response.Write
"(共有"&RS.RecordCount
&"条符合条件的信息,显示"&pagebegin&"-"&pagend&")<
/font>< /p>"<BR>Response.Write "< TABLE WIDTH=600 BORDER=1
CELLPADDING=4 CELLSPACING=0 BGCOLOR=#FFFFFF>"<BR>Response.Write "<
TR BGCOLOR=#5FB5E2>< FONT SIZE=2>< TD>< B>主题<
/B>< /TD>< TD>< B>用户< /B>< /TD><
TD>< B>Email< /B>< /TD>< TD>< B>发布日期<
/B>< /TD>< /FONT>< TR BGCOLOR=#FFFFFF>"<BR>Do while
not (RS is nothing) <BR>RowCount = RS.PageSize<BR>Do While Not RS.EOF and
rowcount > 0 <BR>If n=1 then<BR>Response.Write "< TR
BGCOLOR=#FFFFFF>"<BR>ELSE<BR>Response.Write "< TR
BGCOLOR=#EEEEEE>"<BR>End If<BR>n=1-n %><BR>< TD>< span
style="font-size:9pt">< A href='view.asp?key=< %
=RS("ID")%>'>< % =RS("subject")%>< /A>< /span><
/td> <BR>< TD>< span style="font-size:9pt">< %
=RS("name")%>< /A>< /span>< /td> <BR>< TD><
span style="font-size:9pt">< a href="mailto:< %
=RS("email")%>">< % =RS("email")%>< /a>< /span>
< /TD><BR>< TD>< span style="font-size:9pt">< %
=RS("postdate")%>< /span> < /td><BR>< /TR><BR><
%<BR>RowCount = RowCount - 1<BR>RS.MoveNext<BR>Loop<BR>set RS =
RS.NextRecordSet<BR>Loop<BR>Conn.Close<BR>set rs = nothing<BR>set Conn =
nothing<BR>%><BR>< /TABLE><BR>< FORM METHOD=GET
ACTION="list.asp"><BR>< INPUT TYPE="HIDDEN" NAME="pageno"
VALUE="< % =PageNo %>"><BR>< % <BR>if PageNo > 1 Then
<BR>response.write "< INPUT TYPE=SUBMIT NAME='ScrollAction' VALUE=' 上一页
'>"<BR>end if <BR>if RowCount = 0 and PageNo < >Total then
<BR>response.write "< INPUT TYPE=SUBMIT NAME='ScrollAction' VALUE=' 下一页
'>"<BR>end if <BR>response.write "< /FORM>"<BR>End
if<BR>%><BR>< % End Sub
%><BR><BR> 相信大家都应该能完全读懂上面的程序,因此作者就不在此详细解释了。值得注意的是在这段程序中运用了一个小技巧 <
INPUT TYPE="HIDDEN" NAME="pageno" VALUE="< % =PageNo
%>">,这是用来在每次调用该 ASP 文件时传递数据的“暗道”,由于我们需要在每次调用程序时传递代表当前页码的参数,可能大家会想到使用
session,但是从节省系统资源和通用性来讲,用这样一个隐藏的 form
来传递数据将会达到更好的效果。<BR><BR> 好了,又到了说再见的时候了,如果你没完全看懂本篇中所列的程序,那你必须加把油,看一看
VbScript 的语法;如果你还有某些疑问,可以“妹儿”我,我将尽力解答;如果你有什么更好的建议也千万要来信告诉我哦 :)
<P align=center><A
href="http://chinese.pku.edu.cn/netstudy/aspteach/asp15.htm">上一节</A> <A
href="http://chinese.pku.edu.cn/netstudy/aspteach/asp17.htm">下一节</A></P>
<P align=center><A
href="http://chinese.pku.edu.cn/netstudy/aspteach/index.asp">在线教程首页</A></P></TD></TR></TBODY></TABLE></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -