ASP 数据的分页显示
- 格式:doc
- 大小:79.00 KB
- 文档页数:4
ASP 分页显示数据ADO的Recordset对象可以容纳一个来自数据库表的记录集,并且一个Recordset对象由记录和列(字段)组成。
在练习5-1中掌握了从RecordSet对象中获取并显示数据库中的数据,而在练习5-2里学习了通过RecordSet对象修改数据的方法,本次练习仍以该对象为主。
当在数据库中存储的信息可能有成千上万条,如果一次全部显示会既耗费时间又不便于浏览。
而如果能实现数据的分页显示就能很好地解决这个问题,这也是本次练习要解决的问题,介绍怎样实现数据的分页显示。
实现思路:要想把一个记录集分成多个页进行显示,需要先使用PageSize属性指定一页中的记录个数,然后再使用AbsolutePage属性移动到一个特定的页,最后根据PageCount 属性来返回分成的总页面。
首先打开练习5-2中使用的ASP文件以ShowBookPages.asp为名进行另存。
这样,可以在检索数据库中数据的基础上进行操作,即对这些数据在RecordSet对象中进行分页并单独显示。
下面重点介绍实现代码:(1)由于本文件是基于练习5-2的,找到文件中如下的代码进行修改,使RecordSet中循环显示每一项记录,但开始之前先判断记录集中是否有数据,及总记录和当前页开始的(4)在满足了以上这些条件之后,就可以正确显示记录了,同时这里也要判断是否到(5)添加上述步骤的代码后,程序就实现了简单以每页显示5条数据进行浏览。
但是还在还不能在各个页面之间进行跳转,即翻页功能。
最后,在页面需要显示翻页的位置添加如下的实现代码:(6)保存所有步骤中所添加的代码再运行ShowBookPages.asp文件,运行后默认仅显示了5条数据,在页面底部单击“下一页”链接来查看第2页的数据,同时在底部还显示了总页数、当前页以及页的跳转链接等,如图5-5所示。
图5-5 分页显示数据效果。
那么究竟如何才能做到将数据库的查询结果分页显示呢?其实方法有很多,但主要有两种:一、将数据库中所有符合查询条件的记录一次性的都读入recordset 中,存放在内存中,然后通过ADO Recordset 对象所提供的几个专门支持分页处理的属性:PageSize( 页大小)、PageCount( 页数目) 以及AbsolutePage( 绝对页) 来管理分页处理。
二、根据客户的指示,每次分别从符合查询条件的记录中将规定数目的记录数读取出来并显示。
两者的主要差别在于前者是一次性将所有记录都读入内存然后再根据指示来依次做判断分析从而达到分页显示的效果,而后者是先根据指示做出判断并将规定数目的符合查询条件的记录读入内存,从而直接达到分页显示的功能。
我们可以很明显的感觉到,当数据库中的记录数达到上万或更多时,第一种方法的执行效率将明显低于第二种方法,因为当每一个客户查询页面时都要将所有符合条件的记录存放在服务器内存中,然后在进行分页等处理,如果同时有超过100 个的客户在线查询,那么ASP 应用程序的执行效率将大受影响。
但是,当服务器上数据库的记录数以及同时在线的人数并不是很多时,两者在执行效率上是相差无几的,此时一般就采用第一种方法,因为第一种方法的ASP 程序编写相对第二种方法要简单明了得多。
在这里作者就以我们常见的ASP BBS 程序为例,来给大家分析一下如何在BBS 程序里实现分页显示功能,由于我们一般使用的BBS 程序的数据库记录数和同时访问的人数都不会太多,所以以下程序实例是使用的先前所介绍的第一种分页显示方法。
进行ADO 存取数据库时的分页显示,其实就是对Recordset 的记录进行操作。
所以我们首先必须了解Reordset 对象的属性和方法:BOF 属性:目前指标指到RecordSet 的第一笔。
EOF 属性:目前指标指到RecordSet 的最后一笔。
Move 方法:移动指标到RecordSet 中的某一条记录。
4.0 实现分页效果
在中,用户不仅可以通过分页控件,来显示数据库内容。
用户还可以通过绑定控件实现分页效果。
而下面的实例中,通过自己编写一个简单的代码,来实现数据分页的效果。
虽然,代码并不是最优化效果,但对初学者还是比较容易理解的。
(1)创建paging站点,并右击【解决方案资源管理器】中的目录选项,并执行【添加新项】命令。
然后,在弹出的【添加新项】对话框中,选择【Visual C#】模板,并选择【Web窗体】选项,单击【添加】按钮,如图9-1所示。
图9-1 添加窗体
(2)再左击目录,并执行【新建文件夹】命令,并修改文件夹的名称为images,如图9-2所示。
图9-2 添加文件夹
(3)双击Default.aspx文件,并在编辑器中,编写显示数据内容的样式格式,如下代码所示。
息的代码。
在该代码中,先定义需要用的变量及对象内容,用户也可以边使用边定义变量。
然后,用户再分别创建不同的方法,用于实现相应的功能,如连接数据、获取数据
(5)单击工具栏中的【启动调试】按钮,即可显示数据内容,并且显示当前记录条数和页数内容,如图9-3所示。
图9-3 显示分页效果。
ASP分页技术ASP分页技术<%''本程序文件名为:Pages.asp%><%''包含ADO常量表文件adovbs.inc,可从"\Program Files\Common Files\System\ADO"目录下拷贝%><!--#Include File="adovbs.inc"--><%''*建立数据库连接,这里是Oracle8.05数据库Set conn=Server.CreateObject("ADODB.Connection")conn.Open "Provider=msdaora.1;Data Source=YourSrcName;UserID=YourUserID;Password=YourPassword;"Set rs=Server.CreateObject("ADODB.Recordset") ''创建Recordset对象rs.CursorLocation=adUseClient ''设定记录集指针属性''*设定一页内的记录总数,可根据需要进行调整rs.PageSize=10''*设置查询语句StrSQL="Select ID,姓名,住址,电话 from 通讯录 Order By ID"rs.Open StrSQL,conn,adOpenStatic,adLockReadOnly,adCmdText%><HTML><HEAD><title>分页示例</title><script language=javascript>//点击"[第一页]"时响应:function PageFirst(){document.MyForm.CurrentPage.selectedIndex=0;document.MyForm.CurrentPage.onchange();}//点击"[上一页]"时响应:function PagePrior(){document.MyForm.CurrentPage.selectedIndex--;document.MyForm.CurrentPage.onchange();}//点击"[下一页]"时响应:function PageNext(){document.MyForm.CurrentPage.selectedIndex++;document.MyForm.CurrentPage.onchange();}//点击"[最后一页]"时响应:function PageLast(){document.MyForm.CurrentPage.selectedIndex=document.MyForm.CurrentPage.length-1; document.MyForm.CurrentPage.onchange();}//选择"第?页"时响应:function PageCurrent(){ //Pages.asp是本程序的文件名document.MyForm.action='Pages.asp?Page='+(document.MyForm.CurrentPage.selectedIn dex+1)document.MyForm.submit();}</Script></HEAD><BODY bgcolor="#ffffcc" link="#008000" vlink="#008000" alink="#FF0000""><%IF rs.Eof THENResponse.Write("<font size=2 color=#000080>[数据库中没有记录!]</font>")ELSE''指定当前页码If Request("CurrentPage")="" Thenrs.AbsolutePage=1Elsers.AbsolutePage=CLng(Request("CurrentPage"))End If''创建表单MyForm,方法为GetResponse.Write("<form method=Get name=MyForm>")Response.Write("<p align=center><font size=2 color=#008000>")''设置翻页超链接if rs.PageCount=1 thenResponse.Write("[第一页] [上一页] [下一页] [最后一页] ")elseif rs.AbsolutePage=1 thenResponse.Write("[第一页] [上一页] ")Response.Write("[<a href=javascript:PageNext()>下一页</a>] ")Response.Write("[<a href=javascript:PageLast()>最后一页</a>] ")elseif rs.AbsolutePage=rs.PageCount thenResponse.Write("[<a href=javascript:PageFirst()>第一页</a>] ")Response.Write("[<a href=javascript:PagePrior()>上一页</a>] ")Response.Write("[下一页] [最后一页] ")elseResponse.Write("[<a href=javascript:PageFirst()>第一页</a>] ")Response.Write("[<a href=javascript:PagePrior()>上一页</a>] ")Response.Write("[<a href=javascript:PageNext()>下一页</a>] ")Response.Write("[<a href=javascript:PageLast()>最后一页</a>] ")end ifend ifend if''创建下拉列表框,用于选择浏览页码Response.Write("第<select size=1 name=CurrentPage onchange=PageCurrent()>") For i=1 to rs.PageCountif rs.AbsolutePage=i thenResponse.Write("<option selected>"&i&"</option>") ''当前页码elseResponse.Write("<option>"&i&"</option>")end ifNextResponse.Write("</select>页/共"&rs.PageCount&"页共"&rs.RecordCount&"条记录</font><p>")Response.Write("</form>")''创建表格,用于显示Response.Write("<table align=center cellspacing=1 cellpadding=1 border=1") Response.Write(" bordercolor=#99CCFF bordercolordark=#b0e0e6bordercolorlight=#000066>")Response.Write("<tr bgcolor=#ccccff bordercolor=#000066>")Set Columns=rs.Fields''显示表头For i=0 to Columns.Count-1Response.Write("<td align=center width=200 height=13>")Response.Write("<font size=2><b>"&Columns(i).name&"</b></font></td>")NextResponse.Write("</tr>")''显示内容For i=1 to rs.PageSizeResponse.Write("<tr bgcolor=#99ccff bordercolor=#000066>")For j=0 to Columns.Count-1Response.Write("<td><font size=2>"&Columns(j)&"</font></td>")NextResponse.Write("</tr>")rs.movenextif rs.EOF then exit forNextResponse.Write("</table>")END IF%></BODY></HTML><%''===程序在Win2000Server+IIS5.0+Oracle8.05下测试通过=== ''===作者:夏春涛 E-mail:bluesky_521@===%>。
ASP 数据的分页显示
在ASP中,数据的分页显示非常实用,它的应用可以使数据表中的多条数据实现分页显示,使数据的显示更加条理清晰。
本扩展练习的目的是:使数据表messageTable中的数据实现分页显示,并实现数据的翻页功能。
(1)创建一个命名为Message.asp的ASP页面,主要实现留言内容的添加。
左键单击【文件】|【新建】命令,弹出【新建文档】对话框,在对话框的【文件类型】中选择【ASP VbScript】,【布局】中选择【无】,单击【创建】按钮。
(2)左键单击【文件】|【保存】命令,弹出另存为对话框。
在对话框的【文件名】中输入Message.asp,【保存类型】的下拉列表框中选择“Active Server Pages(*.asp;*.asa)”,单击【保存(S)】按钮。
库驱动程序,然后建立链接并查询数据返回结果集rs
(5)向ASP文件中,添加表格,并在表格中输出数据。
首先向表格中添加标
(7)关闭数据库链接,代码如下所示。
.
图9-5 分页显示。