小魔女 发表于 2015-1-16 23:47:35

ASP教程之ASP中完成分页显现的七种兵器

Windows本身的所有问题都会一成不变的也累加到了它的身上。安全性、稳定性、跨平台性都会因为与NT的捆绑而显现出来;分页|显现|分页在微软的ASP编程系统中,ADO工具的创建,使得从网页会见数据库成为一件易事,出格是ADO的Recordset工具使得把持数据的输入显现更加便利、自在。而在VisualInterDev6.0(以下简称VI6.0)中,因为ScriptObjectModel(以下简称SOM)、Design-TimeControl(以下简称DTC)和DataEnvironmentObjectModel(以下简称DEOM)等工具模子的引进,使网页对数据库的会见计划显得更加便利。

  由于主题方面的缘故原由,关于数据库的毗连,下文只给出代码和扼要正文,而把重点放在怎样使用Recordset工具(或控件)完成数据纪录的分页显现方面。依据我的了解,分页显现的关头就在于对ADO的Recordset工具或DTC(计划时控件)的Recordset控件的属性和办法的纯熟掌控上。

  这七种分页显现的兵器归纳综合起来讲分四类:

  第1、二种我暂取名叫“纯ASP法”,这也是国际的ASP网站上用得最多的办法,它们的区分仅在完成技能的分歧。这两种办法的完成最易了解,用到的工具观点也起码,对开辟情况的请求也最低(只需记事本就行)。能够说,这两种办法的本色仍是CGI的编程头脑,只是在程序中引进了ADO工具罢了。

  第4、五种暂取名叫“SOM的DHTML法”。这两种办法请求在VI6.0的情况下,使用微软提出的剧本工具模子(ScriptObjectModel)和DHTML中Table工具的与数据库绑定的新特征(很多书和文章只先容了DHTML的CSS特征在款式计划中的使用而疏忽先容其数据绑定特征),完成在客户端把持翻页。但它请求用户的扫瞄器必需是撑持DHTML,如:MicrosoftInternetExplorer4.0及以上的版本。

  第六种暂取名叫“SOM服务器端法”。请求在VI6.0的情况下开辟,它使用微软提出的剧本工具模子(ScriptObjectModel)中的几个DTC控件:Recordset、PageObject、Grid等在服务器端(客户端)完成翻页把持。这是一种冲动民气的、全新的编程办法,它把网页当作工具(这类工具模子和传统的DOM----documentobjectmodel是有区分的:DOM只能把持客户端,而SOM可把持服务器端和客户端),它真正完成了网页的面向工具编程。但遗憾的是,大概是我团体才能无限,这类手艺我团体以为还不是很成熟,好比,与扫瞄器的分离还不是很好,这将在后文具体申明。

  第七种暂取名叫“DEOM法”。它也是使用了VI6.0中创建的数据情况工具模子(DataEnvironmentObjectModel)创建Recordset工具。这也是在网页编程上对照少见的新办法,与SOM模子比拟,自有它的长处,这将在后文胪陈。

  在前面所举的一切例子源代码,都能够间接拷贝利用,你乃至能够不懂其道理,只需把个中的粗斜体字部分换成响应本人的数据库名或字段名就能够了。

  在入手下手具体先容各类分页办法前,让我们先创立一个数据库:用Office97中的access自创一个Employee.mdb,个中建一个表emp,只设三个字段:empID,lastname和firstname。为何这么复杂,是由于我们体贴的是如何处置recordset的了局。

  第一种:参数间接代进法

  这类办法是用手工创建Recordset工具,使用其pagesize(每页指定显现纪录数),pagecount(总页码数)和absolutepage(以后页码数)属性来把持分页的输入。分页接纳<href>间接带页码参数的办法来把持翻页。网页的名字为emp1.asp。源代码以下:

<%//创建与employee.mdb数据库的毗连。
Setconn=Server.CreateObject("ADODB.Connection")
conn.Open"driver={MicrosoftAccessDriver(*.mdb)};dbq=employee.mdb"
//创建emp表的Recordset工具实例rs。
Setrs=Server.CreateObject("ADODB.Recordset")
rs.Open"emp",conn,3

PageSize=10//pagesize属性指定了每页要显现的纪录条数
Page=CLng(Request("Page"))’string型转化为long型
IfPage<1ThenPage=1
IfPage>rs.PageCountThenPage=rs.PageCount
IfPage<>1Then
 Response.Write"<AHREF=emp1.asp?Page=1>第一页</A>@"
 Response.Write"<AHREF=emp1.asp?Page="&(Page-1)&">上一页</A>@"
EndIf
IfPage<>rs.PageCountThen
 Response.Write"<AHREF=emp1.asp?Page="&(Page+1)&">下一页</A>@"
 Response.Write"<AHREF=emp1.asp?Page="&rs.PageCount&">最初一页</A>@"
EndIf
Response.write"页码:"&Page&"/"&rs.PageCount&"</font>"
//每页的显现
//显现表头
Response.Write"<CENTER><TABLEBORDER=1>"
Response.WRITE"<TR><TD>"&rs.Fields("empID").Name&"</TD>"
Response.WRITE"<TD>"&rs.Fields("lastname").Name&"</TD>"
Response.WRITE"<TD>"&rs.Fields("firstname").Name&"</TD></TR>"
//轮回显现每笔记录
rs.AbsolutePage=Page//把页码赋给absolutepage属性从而知以后页的首笔记录号
ForiPage=1Tors.PageSize//
Response.WRITE"<TR><TD>"&rs.Fields("empID").Value&"</TD>"
Response.WRITE"<TD>"&rs.Fields("firstname").Value&"</TD>"
Response.WRITE"<TD>"&rs.Fields("lastname").Value&"</TD></TR>"
rs.MoveNext
Ifrs.EOFThenExitFor
Next
Response.Write"</TABLE></CENTER>"%>
  第二种:表单传送参数法

  这类办法在创立Recordset工具时与第一种不异,只是在翻页把持时,接纳<input>和case语句共同来完成翻页。网页的名字为:emp2.asp。此办法在编程逻辑上有个弱点:就是在按过“上页”或“下页”钮后,再在扫瞄器上按革新按钮时,会主动翻页。源代码以下:

ifPagenum=""ThenPagenum=1//从第一页入手下手显现
//创建数据库毗连和Recordset工具实例rs。
与第一种办法不异,此处略过。

RS.Pagesize=10’设置一页中显现的纪录条数为10条
//断定翻页的举措
SelectCaseRequest("NAV")
Case""
 session("Pagenum")=1
case"First"’FirstRecord
 session("Pagenum")=1
case"Prev"’PreviousRecord
 ifsession("Pagenum")>1then
  session("Pagenum")=session("Pagenum")-1
 EndIf
case"Next"’NextRecord
 ifsession("Pagenum")<RS.PageCountthen
  session("Pagenum")=session("Pagenum")+1
 Endif
case"Last"’LastRecord
 session("Pagenum")=RS.PageCount
EndSelect
RS.Absolutepage=Clng(session("Pagenum"))//断定以后页的第一笔记录号
//显现以后页
同第一种办法,此处略过。
//Nav翻页按钮设置
<formmethod="GET"action="emp2.asp">
<inputtype="submit"name="NAV"Value="首页">
<inputtype="submit"value="上页"name="NAV">
<inputtype="submit"value="下页"name="NAV">
<inputtype="submit"value="末页"name="NAV"></form>
  第三种:用Grid控件计划分页

  一切的办法中,这类办法最简单。你只需拖DTC中的Recordset控件和Grid控件到asp网页中就好了。并且,你还能选择是在服务器平台仍是在客户端平台把持翻页。弱点就是你必需用它给定的格局显现,而不克不及本人自在把持表格的显现格局。

  办法以下:

  在VI6.0中建一个工程emp.vip。再在工程中增加一个asp网页:emp3.asp。

  第一步:选VI6.0菜单条上的“adddataconnect…”,按开辟工具的导航提醒,你就能够很简单地创建与Employee.mdb数据库的毗连。从DTC工具栏中拖一个Recordset控件到网页中,并设置其属性。详细如图:

  当你拖控件到网页中时,VI6.0会主动提醒你“是不是利用Scriptingobjectmodel”,按yes。

  第三步:从DTC工具栏中拖一个Grid控件到网页中,然后单击鼠标右键,设置其属性,如:选在第二步中创立的Recordset控件名,选择em</p>大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧

莫相离 发表于 2015-1-20 11:51:45

学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。

仓酷云 发表于 2015-1-20 14:03:51

你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

第二个灵魂 发表于 2015-1-22 06:16:56

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。

老尸 发表于 2015-1-25 17:59:18

完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。

若天明 发表于 2015-2-2 21:29:35

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。

灵魂腐蚀 发表于 2015-2-8 06:10:45

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

山那边是海 发表于 2015-2-24 11:19:56

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

兰色精灵 发表于 2015-3-7 12:04:01

那么,ASP.Net有哪些改进呢?

冷月葬花魂 发表于 2015-3-15 03:51:17

运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。

谁可相欹 发表于 2015-3-21 17:32:15

先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习
页: [1]
查看完整版本: ASP教程之ASP中完成分页显现的七种兵器