您现在的位置: 网页制作教程网 >> 网络编程 >> Asp教程 >> ASP基础教程 >> 正文

asp基础教程:ASP实现分页显示的七种方法

作者:网易学院

来源:网易学院

热度:

2008-2-16 13:06:25

第六种:服务器端控制翻页方法。

  如果我们在服务器端对数据进行分页形成HTML语句后再输出到客户端,就不会存在浏览器不支持DHTML的问题了。可是用服务器端法使得我们每次翻页时,都得让Recordset控件重新产生一次,因此速度肯定要比用DHTML的方法慢。但如果服务器足够快的话,这点慢客户是察觉不到的。

  下面的例子中,我将介绍一个新的DTC控件:PageObject。这个控件使被指定的网页成为一个网页对象,用户在此网页的服务器脚本中组织的子程序和函数可被看作是该网页对象的方法。它提供了管理状态信息的一种先进的方法:网页对象有一些属性(变量),用户可以定义这些属性的生存期。因为以上这些特性,使我们在编制翻页的脚本时非常方便。

   但这种方法的缺点是:当你按了“上页”或“下页”按钮后,再浏览器上的按刷新按钮,网页会自动翻页。另外,如果按了浏览器上的“回退”按钮后,再按翻页按钮,可能会出现一次乱翻。这都是因为网页对象属性(全局变量)造成的。

   第一步:拖Recordset控件到新建的网页emp6.asp中,名字为Recordset1,设置其属性,方法同第三种,此处略。

  第二步:拖PageObject控件到网页中,取名叫emplist。然后右键单击此控件打开属性页并设置MaxPageNumber, RecordsPerPage,CurrrentPageNumber三个属性(全局变量)。VI6.0可用get和set方法来读写它们的值,具体用法请查阅相关资料。

   第三步:编写Recordset1的ondatasetcomplete事件。
Function Recordset1_ondatasetcomplete()
recordsPerPage = 5
empList.setRecordsPerPage(recordsPerPage)//设置网页对象每页记录条数属性为5
totalRecordCount = Recordset1.getCount()//获得记录集的总条数
mpn = Int(totalRecordCount / recordsPerPage) //计算出mpn为总页数
If (totalRecordCount Mod recordsPerPage) > 0 then
mpn = mpn + 1
End If
empList.setMaxPageNumber(mpn)
End Function
第四步:拖四个button控件到网页中,编写翻页控制脚本。我们主要是通过改变网页对象的CurrentPageNumber属性的值来实现翻页。
以下是引用片段:
Function btnFirst_onclick()’ 翻到首页
  empList.setCurrentPageNumber(1)
End Function

Function btnPrevious_onclick()’ 翻到上一页
  cpn = empList.getCurrentPageNumber()
  if cpn > 1 Then
   empList.setCurrentPageNumber(cpn - 1)
  End If
End Function

Function btnNext_onclick()’ 翻到下一页
  cpn = empList.getCurrentPageNumber()
  if cpn < empList.getMaxPageNumber() then
   empList.setCurrentPageNumber(cpn + 1)
  End If
End Function

Function btnLast_onclick() ’ 翻到末页
  empList.setCurrentPageNumber( empList.getMaxPageNumber() )
End Function
为保证首次进入该页时,显示的是第一页,我们还得编写该网页对象的onEnter事件。
以下是引用片段:
Function empList_onEnter()
  If empList.firstEntered Then
   empList.setCurrentPageNumber(1)
  End If
End Function

上一页  [1] [2] [3] [4] [5] 下一页


我来说两句:

1分 2分 3分 4分 5分
姓名: *


* 请各位网友遵纪守法并注意语言文明。
网站简介 | 联系方式 | 意见建议 | 版权说明
Copyright © 2007 All rights reserved
滇ICP备06006992号