ASP 中关于帖子分页显示的基本方法
在了解了 Recordset 对象的以上属性和方法后，我们来考虑一下，如何运用它们来达到我们分页显示的目的。首先，我们可以为 PageSize 属性设置一个值，从而指定从记录组中取出的构成一个页的行数；然后通过 RecordCount 属性来确定记录的总数；再用记录总数除以 PageSize 就可得到所显示的页面总数；最后通过 AbsolutePage 属性就能完成对指定页的访问。好象很并不复杂呀，下面让我们来看看程序该如何实现呢？
我们建立这样一个简单的 BBS 应用程序，它的数据库中分别有以下五个字段：“ID”，每个帖子的自动编号；“subject”，每个帖子的主题；“name”，加帖用户的姓名；“email”，用户的电子邮件地址；“postdate”，加帖的时间。数据库的 DSN 为“bbs”。我们将显示帖子分页的所有步骤放在一个名为“ShowList()”的过程中，方便调用。程序如下：
’----BBS 显示帖子分页----
< Sub ShowList() >
<
PgSz=20 ’设定开关，指定每一页所显示的帖子数目，默认为 20 帖一页
Set Conn = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.RecordSet")
sql = "SELECT * FROM message order by ID DESC"
’查询所有帖子，并按帖子的 ID 倒序排列
Conn.Open "bbs"
RS.open sql,Conn,1,1
If RS.RecordCount=0 then
response.write "< P>< center>对不起，数据库中没有相关信息！< /center>< /P>"
else
RS.PageSize = Cint(PgSz) ’设定 PageSize 属性的值
Total=INT(RS.recordcount / PgSz * -1)*-1 ’计算可显示页面的总数
PageNo=Request("pageno")
if PageNo="" Then
PageNo = 1
else
PageNo=PageNo+1
PageNo=PageNo-1
end if
ScrollAction = Request("ScrollAction")
if ScrollAction = " 上一页 " Then
PageNo=PageNo-1
end if
if ScrollAction = " 下一页 " Then
PageNo=PageNo+1
end if
if PageNo < 1 Then
PageNo = 1
end if
n=1
RS.AbsolutePage = PageNo
Response.Write "< CENTER>"
position=RS.PageSize*PageNo
pagebegin=position-RS.PageSize+1
if position < RS.RecordCount then
pagend=position
else
pagend= RS.RecordCount
end if
Response.Write "< P>< font color=’Navy’>< B>数 据 库 查 询 结 果:< /B>"
Response.Write "(共有"&RS.RecordCount &"条符合条件的信息,显示"&pagebegin&"-"&pagend&")< /font>< /p>"
Response.Write "< TABLE WIDTH=600 BORDER=1 CELLPADDING=4 CELLSPACING=0 BGCOLOR=#FFFFFF>"
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 >"