你好,欢迎访问远方教程PC版!
广告位招租

ASP数据篇:3.6 ADO存取数据库时如何分页显示(第2页)

[日期:2014-11-08]   来源:远方教程  作者:远方教程   阅读:3353次[字体: ] 访问[旧版]
 捐赠远方教程 

  我们建立这样一个简单的 BBS 应用程序,它的数据库中分别有以下五个字段:“ID”,每个帖子的自动编号;“subject”,每个帖子的主题;“name”,加帖用户的姓名;“email”,用户的电子邮件地址;“postdate”,加帖的时间。数据库的 DSN 为“bbs”。我们将显示帖子分页的所有步骤放在一个名为“ShowList()”的过程中,方便调用。程序如下:

----BBS 显示帖子分页----
$#@60; % Sub ShowList() %$#@62;
$#@60; %
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 "$#@60; P$#@62;$#@60; center$#@62;对不起,数据库中没有相关信息!$#@60; /center$#@62;$#@60; /P$#@62;"
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 $#@60; 1 Then
PageNo = 1
end if
n=1
RS.AbsolutePage = PageNo
Response.Write "$#@60; CENTER$#@62;"
position=RS.PageSize*PageNo
pagebegin=position-RS.PageSize+1
if position $#@60; RS.RecordCount then
pagend=position
else
pagend= RS.RecordCount
end if
Response.Write "$#@60; P$#@62;$#@60; font color=Navy$#@62;$#@60; B$#@62;数据库查询结果:$#@60; /B$#@62;"
Response.Write "(共有"&RS.RecordCount &"条符合条件的信息,显示"&pagebegin&"-"&pagend&")$#@60; /font$#@62;$#@60; /p$#@62;"
Response.Write "$#@60; TABLE WIDTH=600 BORDER=1 CELLPADDING=4 CELLSPACING=0 BGCOLOR=#FFFFFF$#@62;"
Response.Write "$#@60; TR BGCOLOR=#5FB5E2$#@62;$#@60; FONT SIZE=2$#@62;$#@60; TD$#@62;$#@60; B$#@62;主题$#@60; /B$#@62;$#@60; /TD$#@62;$#@60; TD$#@62;$#@60; B$#@62;用户$#@60; /B$#@62;$#@60; /TD$#@62;$#@60; TD$#@62;$#@60; B$#@62;Email$#@60; /B$#@62;$#@60; /TD$#@62;$#@60; TD$#@62;$#@60; B$#@62;发布日期$#@60; /B$#@62;$#@60; /TD$#@62;$#@60; /FONT$#@62;$#@60; TR BGCOLOR=#FFFFFF$#@62;"
Do while not (RS is nothing)
RowCount = RS.PageSize
Do While Not RS.EOF and rowcount $#@62; 0
If n=1 then
Response.Write "$#@60; TR BGCOLOR=#FFFFFF$#@62;"
ELSE
Response.Write "$#@60; TR BGCOLOR=#EEEEEE$#@62;"
End If
n=1-n %$#@62;
$#@60; TD$#@62;$#@60; span style="font-size:9pt"$#@62;$#@60; A href=view.asp?key=$#@60; % =RS("ID")%$#@62;$#@62;$#@60; % =RS("subject")%$#@62;$#@60; /A$#@62;$#@60; /span$#@62;$#@60; /td$#@62;
$#@60; TD$#@62;$#@60; span style="font-size:9pt"$#@62;$#@60; % =RS("name")%$#@62;$#@60; /A$#@62;$#@60; /span$#@62;$#@60; /td$#@62;
$#@60; TD$#@62;$#@60; span style="font-size:9pt"$#@62;$#@60; a href="mailto:$#@60; % =RS("email")%$#@62;"$#@62;$#@60; % =RS("email")%$#@62;$#@60; /a$#@62;$#@60; /span$#@62; $#@60; /TD$#@62;
$#@60; TD$#@62;$#@60; span style="font-size:9pt"$#@62;$#@60; % =RS("postdate")%$#@62;$#@60; /span$#@62; $#@60; /td$#@62;
$#@60; /TR$#@62;
$#@60; %
RowCount = RowCount - 1
RS.MoveNext
Loop
set RS = RS.NextRecordSet
Loop
Conn.Close
set rs = nothing
set Conn = nothing
%$#@62;
$#@60; /TABLE$#@62;
$#@60; FORM METHOD=GET ACTION="list.asp"$#@62;
$#@60; INPUT TYPE="HIDDEN" NAME="pageno" VALUE="$#@60; % =PageNo %$#@62;"$#@62;
$#@60; %
if PageNo $#@62; 1 Then
response.write "$#@60; INPUT TYPE=SUBMIT NAME=ScrollAction VALUE= 上一页 $#@62;"
end if
if RowCount = 0 and PageNo $#@60; $#@62;Total then
response.write "$#@60; INPUT TYPE=SUBMIT NAME=ScrollAction VALUE= 下一页 $#@62;"
end if
response.write "$#@60; /FORM$#@62;"
End if
%$#@62;
$#@60; % End Sub %$#@62;

  相信大家都应该能完全读懂上面的程序,因此作者就不在此详细解释了。值得注意的是在这段程序中运用了一个小技巧 $#@60; INPUT TYPE="HIDDEN" NAME="pageno" VALUE="$#@60; % =PageNo %$#@62;"$#@62;,这是用来在每次调用该 ASP 文件时传递数据的“暗道”,由于我们需要在每次调用程序时传递代表当前页码的参数,可能大家会想到使用 session,但是从节省系统资源和通用性来讲,用这样一个隐藏的 form 来传递数据将会达到更好的效果。

  好了,又到了说再见的时候了,如果你没完全看懂本篇中所列的程序,那你必须加把油,看一看 VbScript 的语法;如果你还有某些疑问,可以“妹儿”我,我将尽力解答;如果你有什么更好的建议也千万要来信告诉我哦 :)

第1页 第2页
图片展示
 
相关评论
站长推荐