• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP > ASP中实现分页显示的七种方法

ASP中实现分页显示的七种方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了asp实现分页,asp net做分页,asp分页代码,asp分页显示代码,asp分页等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在微软的ASP编程体系中,ADO对象的建立,使得从网页访问数据库成为一件易事,特别是ADO的Recordset对象使得控制数据的输出显示更为方便、自由。而在Visual InterDev6.0(以下简称VI6.0)中,由于Script Object Model(以下简称SOM)、Design-Time Control(以下简称DTC)以及Data Environment Object Model(以下简称DEOM)等对象模型的引入,使网页对数据库的访问设计显得更为方便。
因为主题方面的原因,关于数据库的连接,下文只给出代码和简要注释,而把重点放在如何利用Recordset对象(或控件)实现数据记录的分页显示方面。根据我的理解,分页显示的关键就在于对ADO的Recordset对象或DTC(设计时控件)的Recordset控件的属性和方法的熟练把握上。
这七种分页显示的武器概括起来说分四类:
第一、二种我暂取名叫“纯ASP法”,
这也是国内的ASP网站上用得最多的方法,它们的区别仅在实现技巧的不同。这两种方法的实现最易理解,用到的对象概念也最少,对开发环境的要求也最低(只要记事本就行)。可以说,这两种方法的实质还是CGI的编程思想,只是在程序中引入了ADO对象而已。
第四、五种暂取名叫“SOM的DHTML法”。这两种方法要求在VI6.0的环境下,利用微软提出的脚本对象模型(Script Object Model)和DHTML中Table对象的与数据库绑定的新特性(许多书和文章只介绍了DHTML的CSS特性在样式设计中的运用而忽略介绍其数据绑定特性),实现在客户端控制翻页。但它要求用户的浏览器必须是支持DHTML,如:Microsoft Internet Explorer 4.0及以上的版本。
第六种暂取名叫“SOM服务器端法”。要求在VI6.0的环境下开发,它利用微软提出的脚本对象模型(Script Object Model)中的几个DTC控件:Recordset、PageObject、Grid等在服务器端(客户端)实现翻页控制。这是一种激动人心的、全新的编程方法,它把网页看成对象(这种对象模型和传统的DOM----document object model是有区别的:DOM只能控制客户端,而SOM可控制服务器端和客户端),它真正实现了网页的面向对象编程。但遗憾的是,也许是我个人能力有限,这种技术我个人认为还不是很成熟,比如,与浏览器的结合还不是很好,这将在后文详细说明。
第七种暂取名叫“DEOM法”。它也是利用了VI6.0中建立的数据环境对象模型(Data Environment Object Model)建立Recordset对象。这也是在网页编程上比较少见的新方法,与SOM模型相比,自有它的优点,这将在后文详述。
在后面所举的所有例子源代码,都可以直接拷贝使用,你甚至可以不懂其原理,只要把其中的粗斜体字部分换成相应自己的数据库名或字段名就可以了。
在开始详细介绍各种分页方法前,让我们先创建一个数据库:用Office97中的access自创一个Employee.mdb,其中建一个表emp,只设三个字段:emp ID,last name和first name。为什么这么简单,是因为我们关心的是怎样处理recordset的结果。
第一种:参数直接代入法
这种方法是用手工建立Recordset对象,利用其pagesize(每页指定显示记录数),pagecount(总页码数)和absolutepage(当前页码数)属性来控制分页的输出。分页采用<href>直接带页码参数的方法来控制翻页。网页的名字为emp1.asp。源代码如下:

<%//建立与employee.mdb数据库的连接。
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=employee.mdb"
//建立emp表的Recordset对象实例rs。
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "emp", conn, 3
PageSize = 10 //pagesize属性指定了每页要显示的记录条数
Page = CLng(Request("Page")) 'string型转化为long型
If Page < 1 Then Page = 1
If Page > rs.PageCount Then Page = rs.PageCount
If Page <> 1 Then
 Response.Write "<A HREF=emp1.asp?Page=1>第一页</A>"
 Response.Write "<A HREF=emp1.asp?Page=" & (Page-1) & ">上一页</A>"
End If
If Page <> rs.PageCount Then
 Response.Write "<A HREF=emp1.asp?Page=" & (Page+1) & ">下一页</A>"
 Response.Write "<A HREF=emp1.asp?Page="&rs.PageCount & ">最后一页</A>"
End If
Response.write"页码:" & Page & "/" & rs.PageCount & "</font>"
//每一页的显示
//显示表头
Response.Write "<CENTER><TABLE BORDER=1>"
Response.WRITE "<TR><TD>" & rs.Fields("emp ID").Name & "</TD>"
Response.WRITE "<TD>" & rs.Fields("last name").Name & "</TD>"
Response.WRITE "<TD>" & rs.Fields("first name").Name & "</TD></TR>"
//循环显示每条记录
rs.AbsolutePage = Page //把页码赋给absolutepage属性从而知当前页的首条记录号
For iPage = 1 To rs.PageSize //
Response.WRITE "<TR><TD>" & rs.Fields("emp ID").Value & "</TD>"
Response.WRITE "<TD>" & rs.Fields("first name").Value & "</TD>"
Response.WRITE "<TD>" & rs.Fields("last name").Value & "</TD></TR>"
rs.MoveNext
If rs.EOF Then Exit For
Next
Response.Write "</TABLE></CENTER>"%>
</div>


第二种:表单传送参数法
这种方法在创建Recordset对象时与第一种相同,只是在翻页控制时,采用<input>和case语句配合来实现翻页。网页的名字为:emp2.asp。此方法在编程逻辑上有个缺点:就是在按过“上页”或“下页”钮后,再在浏览器上按刷新按钮时,会自动翻页。源代码如下:

if Pagenum = "" Then Pagenum = 1 //从第一页开始显示
//建立数据库连接和Recordset对象实例rs。
与第一种方法相同,此处略过。
RS.Pagesize = 10 ' 设置一页中显示的记录条数为10条
// 确定翻页的动作
Select Case Request("NAV")
Case ""
 session("Pagenum") = 1
case "First" ' First Record
 session("Pagenum") = 1
case "Prev" ' Previous Record
 if session("Pagenum") > 1 then
  session("Pagenum") = session("Pagenum") - 1
 End If
case "Next" ' Next Record
 if session("Pagenum")< RS.PageCount then
  session("Pagenum") = session("Pagenum") + 1
 End if
case "Last" ' Last Record
 session("Pagenum") = RS.PageCount
End Select
RS.Absolutepage = Clng(session("Pagenum")) //确定当前页的第一条记录号
// 显示当前页
同第一种方法,此处略过。
// Nav 翻页按钮设置
<form method="GET" action="emp2.asp">
<input type="submit" name="NAV" Value="首页">
<input type="submit" value="上页" name="NAV">
<input type="submit" value="下页" name="NAV">
<input type="submit" value="末页" name="NAV"></form>
</div>

第三种:用Grid控件设计分页
所有的方法中,这种方法最容易。你只需拖DTC中的Recordset控件和Grid控件到asp网页中就行了。而且,你还能选择是在服务器平台还是在客户端平台控制翻页。缺点就是你必须用它给定的格式显示,而不能自己自由控制表格的显示格式。
方法如下:
在VI6.0中建一个工程emp.vip。再在工程中添加一个asp网页:emp3.asp。
第一步:选VI6.0菜单条上的“add data connect…”,按开发工具的导航提示,你就可以很容易地建立与Employee.mdb数据库的连接。从DTC工具栏中拖一个Recordset控件到网页中,并设置其属性。具体如图:
当你拖控件到网页中时,VI6.0会自动提示你“是否使用Scripting object model”,按yes。
第三步:从DTC工具栏中拖一个Grid控件到网页中,然后单击鼠标右键,设置其属性,如:选在第二步中创建的Recordset控件名,选择emp表中的字段,每页显示多少条记录以及显示格式等。非常简单方便,只要照着导航提示做就行了。
第四种:DHTML法一。
数据记录显示在一个HTML表中。它利用DHTML中表的数据绑定特性来控制记录的分页显示。缺点就是你的翻页方法将被限制为一种特定的方式:只能“上页”和“下页”而不能“首页”和“末页”。由于是在客户端控制翻页,所以,这种和第五种方法是速度最快的,但遗憾的是它只能在支持DHTML的浏览器上使用。
在DHTML中,<TABLE>的DATASRC属性可使表格绑定到一个数据源,另一个属性DATAPAGESIZE可指定一页一次显示的记录数。
我们来看下面的例子:
第一步:拖Recordset控件到新建的网页emp4.htm中,设置其属性,方法同第三种,此处略。
第二步:输入下面的代码:

<TABLE ID="Table1" DATASRC="#Recordset1_RDS" DATAPAGESIZE=5> //假定前面设定Recordset控件名为Recordset1。每页显示5条记录。
<THEAD>
<TH ALIGN="left" WIDTH=150>Emp ID</TH> //输出表头
<TH ALIGN="left" WIDTH=200>Last Name</TH>
<TH ALIGN="left" WIDTH=200>First Name</TH>
</THEAD>
<TR>
<TD><DIV DATAFLD="Emp ID"></div></TD> //输出表内容
<TD><DIV DATAFLD="Last Name"></div></TD>
<TD><DIV DATAFLD="First Name"></div></TD>
</TR>
</TABLE>
</div>

第三步:然后,增加一对DTCs Button按钮控件来做翻页导航,一个命名为“btnPrevious”(上一页),一个

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • asp实现限制一个ip只能访问一次的方法
  • ASP中实现分页显示的七种方法
  • asp实现检查ip地址是否为内网或者私有ip地址的代码分享
  • ASP 无限级分类实现
  • 用ASP实现对MP3曲目信息的操作

相关文章

  • 2017-05-11asp实现获取MSSQL数据库表指定条件行数的函数
  • 2017-05-11关于ASP生成伪参数技巧 简洁实用的伪(僞)参数
  • 2017-05-11ASP动态生成的javascript表单验证代码
  • 2017-05-11水印测试(重新测试)
  • 2017-05-11asp中实现清除html的函数
  • 2017-05-11Excel连接字符串中的HDR、IMEX参数详解
  • 2017-05-11ReplaceSaveRemoteFile 替换、保存远程图片 的代码
  • 2017-05-11access数据库的一些少用操作,ASP,创建数据库文件,创建表,创建字段,ADOX
  • 2017-05-11asp 删除数据库记录的代码
  • 2017-05-11aspjpeg 添加水印教程及生成缩略图教程

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • ASP代码的对象化
    • asp水印组件之AspJpeg的结合代码实例
    • 一个简单的asp数据库操作类
    • asp下实现替换远程文件为本地文件并保存远程文件的代码
    • asp+JMAIL实现发送邮件
    • asp textbox获取显示mysql数据示例代码
    • ASP中用ajax方式获得session的实现代码
    • ASP中有关双引号,单引号以及&号的解释
    • asp操作access提示无法从指定的数据表中删除原因分析及解决
    • PR值查询代码制作

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有