若天明 发表于 2015-1-16 23:39:13

ASP网页设计ASP分页显现详论

ActiveServerPage技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。分页|显现假如你利用过今朝浩瀚网站上的电子通告板程序的话,那你应当会晓得电子通告板程序为了进步页面的读取速率,
一样平常不会将一切的帖子全体在一页中排列出来,而是将其分红多页显现,每页
显现必定数量的帖子数,比如20条。想不想懂得怎样完成分页显现?请看
本文!
  那末事实怎样才干做到将数据库的查询了局分页显现呢?实在办法有良多,

但次要有两种:
  1、将数据库中一切切合查询前提的纪录一次性的都读进recordset中,
寄存在内存中,然后经由过程ADORecordset工具所供应的几个专门撑持分页处
理的属性:PageSize(页巨细)、PageCount(页数量)和
AbsolutePage(相对页)来办理分页处置。
  2、依据客户的唆使,每次分离从切合查询前提的纪录中将划定数量的记
录数读掏出来并显现。
  二者的次要不同在于前者是一次性将一切纪录都读进内存然后再依据唆使
来顺次做判别剖析从而到达分页显现的效果,尔后者是先依据唆使做出判别并
将划定数量的切合查询前提的纪录读进内存,从而间接到达分页显现的功效。

  我们能够很分明的感到到,当数据库中的纪录数到达上万或更多时,第一
种办法的实行效力将分明低于第二种办法,由于当每个客户查询页面时都要
将一切切合前提的纪录寄存在服务器内存中,然后在举行分页等处置,假如
同时有凌驾100个的客户在线查询,那末ASP使用程序的实行效力将年夜受
影响。可是,当服务器上数据库的纪录数和同时在线的人数并非良多时,
二者在实行效力上是相差无几的,此时一样平常就接纳第一种办法,由于第一种
办法的ASP程序编写绝对第二种办法要复杂了然很多。
  在这里作者就以我们罕见的ASPBBS程序为例,来给人人剖析一下怎样
在BBS程序里完成分页显现功效,因为我们一样平常利用的BBS程序的数据库
纪录数和同时会见的人数都不会太多,以是以下程序实例是利用的先前所先容
的第一种分页显现办法。
  举行ADO存取数据库时的分页显现,实在就是对Recordset的纪录
举行操纵。以是我们起首必需懂得Reordset工具的属性和办法:
  BOF属性:今朝目标指到RecordSet的第一笔。
  EOF属性:今朝目标指到RecordSet的最初一笔。
  Move办法:挪动目标到RecordSet中的某一笔记录。
  AbsolutePage属性:设定以后纪录的地位是位于哪一页
AbsolutePosition属性:今朝目标在RecordSet中的地位。
  PageCount属性:显现Recordset工具包含几“页”的数据。
  PageSize属性:显现Recordset工具每页显现的纪录数。
  RecordCount属性:显现Recordset工具纪录的总数。
  上面让我们来具体熟悉一下这些主要的属性和办法
  1、BOF与EOF属性
  一般我们在ASP程序中编写代码来查验BOF与EOF属性,从而得知
今朝目标所指向的RecordSet的地位,利用BOF与EOF属性,能够得知
一个Recordset工具是不是包括有纪录大概得知挪动纪录行是不是已超越该
Recordset工具的局限。
  如:<%ifnotrs.eofthen...%>
  <%ifnot(rs.bofandrs.eof)%>
  若以后纪录的地位是在一个Recordset工具第一行纪录之前时,BOF
属性前往true,反之则前往false。
  若以后纪录的地位是在一个Recordset工具最初一行纪录以后时,
EOF属性前往true,反之则前往false。
  BOF与EOF都为False:暗示目标位于RecordSet确当中。
  BOF为True:今朝目标指到RecordSet的第一条记录。
EOF为True:今朝目标指到RecordSet的最初一条记录。
  BOF与EOF都为True:在RecordSet里没有任何纪录。
  2、Move办法
  您能够用Move办法挪动目标到RecordSet中的某一条记录,语法以下:

  rs.MoveNumRecords,Start
  这里的“rs”为一个工具变量,暗示一个想要挪动铛铛前纪录地位的
Recordset工具;“NumRecords”是一个正正数运算式,设定以后纪录地位
的挪动数量;“start”是一个可选的项目,用来指定纪录肇端的标签。
  一切的Recordset工具都撑持Move办法,假如NumRecords参数
年夜于零,以后纪录地位向开端的偏向挪动;假如其小于零,则以后纪录地位
向开首的偏向挪动;假如一个空的Recordset工具挪用Move办法,将会
发生一个毛病。
  MoveFirst办法:将以后纪录地位移至第一条记录。
  MoveLast办法:将以后纪录地位移至最初一条记录。
  MoveNext办法:将以后纪录地位移至下一条记录。
MovePrevious办法:将以后纪录地位移至上一条记录。
  Move办法:挪动目标到第n条记录,n由0算起。
  3、AbsolutePage属性
  AbsolutePage属性设定以后纪录的地位是位于哪一页的页数编号;
利用PageSize属性将Recordset工具支解为逻辑上的页数,每页的纪录
数为PageSize(除最初一页大概会有少于PageSize的纪录数)。这里
必需注重并非一切的数据供应者都撑持此项属性,因而利用时要当心。
  与AbsolutePosition属性不异,AbsolutePage属性是以1为肇端
的,若以后纪录为Recordset的第一行纪录,AbsolutePage为1。能够
设定AbsolutePage属性,以挪动到一个指定页的第一行纪录地位。
  4、AbsolutePosition属性
  若您必要断定今朝目标在RecordSet中的地位,您能够用
AbsolutePosition属性。
  AbsolutePosition属性的数值为今朝目标绝对於第一笔的地位,由1
算起,即第一笔的AbsolutePosition为1。
  注重,在存取RecordSet时,没法包管RecordSet每次都以一样的
按次呈现。
  若要启用AbsolutePosition,必需先设定为利用用户端
cursor(指针),asp码以下:
  rs2.CursorLocation=3
  5、PageCount属性
  利用PageCount属性,决意Recordset工具包含几“页”的数据。
这里的“页”是数据纪录的汇合,巨细即是PageSize属性的设定,即便最初
一页的纪录数比PageSize的值少,最初一页也算是PageCount的一页。
必需注重也并非一切的数据供应者都撑持此项属性。
  6、PageSize属性
  PageSize属性是决意ADO存取数据库时怎样分页显现的关头,利用它
就能够决意几纪录构成一个逻辑上的“一页”。设定并创建一个页的巨细,
从而同意利用AbsolutePage属性移到别的逻辑页的第一笔记录。
PageSize属功能随时被设定。
  7、RecordCount属性
  这也是一个十分经常使用和主要的属性,我们经常使用RecordCount属性来找出
一个Recordset工具包含几笔记录。如:
<%totle=RS.RecordCount%>
  在懂得了Recordset工具的以上属性和办法后,我们来思索一下,
怎样使用它们来到达我们分页显现的目标。起首,我们能够为PageSize属性
设置一个值,从而指定从纪录组中掏出的组成一个页的行数;然后经由过程
RecordCount属性来断定纪录的总数;再用纪录总数除以PageSize便可得
到所显现的页面总数;最初经由过程AbsolutePage属性就可以完成对指定页的会见
好象很其实不庞大呀,上面让我们来看看程序该怎样完成呢?
  我们创建如许一个复杂的BBS使用程序,它的数据库平分别有以下五个
字段:“ID”,每一个帖子的主动编号;“subject”,每一个帖子的主题;
“name”,加帖用户的姓名;“email”,用户的电子邮件地点;
“postdate”,加帖的工夫。数据库的DSN为“bbs”。我们将显现帖子
分页的一切步骤放在一个名为“ShowList()”的过程当中,便利挪用。
程序以下:

----BBS显现帖子分页----
<%SubShowList()%>
<%
PgSz=20设定开关,指定每页所显现的帖子数量,默许为20帖一页
SetConn=Server.CreateObject("ADODB.Connection")
SetRS=Server.CreateObject("ADODB.RecordSet")
sql="SELECT*FROMmessageorderbyIDDESC"
查询一切帖子,并按帖子的ID倒序分列
Conn.Open"bbs"
RS.opensql,Conn,1,1
IfRS.RecordCount=0th</p>写软件都是想的时间比写的时间要长的.如果反过来了就得看看是什么原因了.另外大家可以回去问问公司里的小MM.(一般企业里,跟你们交付软件接触得最多的是她们)

小魔女 发表于 2015-1-20 10:53:16

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。

简单生活 发表于 2015-1-29 06:51:26

还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。

透明 发表于 2015-1-30 13:40:43

我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。

谁可相欹 发表于 2015-2-6 12:55:53

以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。

蒙在股里 发表于 2015-2-16 03:32:59

没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。

活着的死人 发表于 2015-3-4 23:20:13

ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。

因胸联盟 发表于 2015-3-11 21:23:18

我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。

只想知道 发表于 2015-3-19 14:04:33

哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?

精灵巫婆 发表于 2015-3-28 08:11:25

以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
页: [1]
查看完整版本: ASP网页设计ASP分页显现详论