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

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

作者:网易学院

来源:网易学院

热度:

2008-2-16 13:06:25



   第四种: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>
第三步:然后,增加一对DTCs Button按钮控件来做翻页导航,一个命名为“btnPrevious”(上一页),一个命名为“btnNext”(下一页)。它们相应的脚本如下:
<SCRIPT LANGUAGE=VBScript>
Function btnPrevious_onclick()
Table1.previousPage()
End Function

Function btnNext_onclick()
Table1.nextPage()
End Function
</SCRIPT>
第五种:DHTML法二

  这种方法是对第四种方法的完善。采用手工编写脚本的方法,使我们能做“首页”,“末页”翻页导航按钮,并能确定每条记录的位置(记录号)。由于篇幅的关系,我在下面只介绍一个具体例子,并给出简要说明。其它关于DHTML和Recordset控件的一些属性和方法请读者自行参照相关书籍。这里需要提请注意的是,Recordset控件与第一、二种方法中介绍的ADO的Recordset对象有些不同:Recordset控件没有直接给出pagesize 和pagecount等属性,需要用下面介绍的方法来计算。

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

   第二步:定义三个全局变量和编写Recordset1的ondatasetcomplete(数据设置完成时)脚本。
Dim gCurrentPageNumber //当前页号
Dim gMaxPageNumber //最大页数
Dim gRecordsPerPage //每页显示记录数
gRecordsPerPage = 5 // 设置每页显示记录数为5条记录。

Function Recordset1_ondatasetcomplete()
totalRecordCount = Recordset1.getCount() //总的记录条数
gMaxPageNumber = Int(totalRecordCount / gRecordsPerPage) //获得最大页数
If (totalRecordCount Mod gRecordsPerPage) > 0 then
gMaxPageNumber = gMaxPageNumber + 1
End If
End Function
第三步:创建翻页导航按钮。
Function btnFirst_onclick() ’ 翻到首页
  gCurrentPageNumber = 1
  DisplayData()
End Function

Function btnPrevious_onclick() ’ 翻到上一页
  if gCurrentPageNumber > 1 Then
   gCurrentPageNumber = gCurrentPageNumber - 1
   DisplayData()
  End If
End Function

Function btnNext_onclick() ’ 翻到下一页
  if gCurrentPageNumber < gMaxPageNumber Then
   gCurrentPageNumber = gCurrentPageNumber + 1
   DisplayData()
  End If
End Function

Function btnLast_onclick() ’翻到末页
  gCurrentPageNumber = gMaxPageNumber
  DisplayData()
End Function
第四步:编写显示每一页的函数。其中使用了许多DHTML的属性和方法,请读者自行参考相关书籍。
Sub DisplayData()
startRecord = ((gCurrentPageNumber - 1) * gRecordsPerPage) + 1 //计算每一页开始显示的记录号数(位置,第几条)
rowCtr = 1
lblPageNumber.innerHTML = gCurrentPageNumber & "/" & gMaxPageNumber
For recordPtr = startRecord To (startRecord + gRecordsPerPage - 1) //循环显示一页的各条记录
  If recordPtr > Recordset1.getCount() Then //显示空表
   Table1.rows(rowCtr).cells(0).innerHTML = "<P> </P>"
   Table1.rows(rowCtr).cells(1).innerHTML = "<P> </P>"
   Table1.rows(rowCtr).cells(2).innerHTML = "<P> </P>"
   Table1.rows(rowCtr).cells(3).innerHTML = "<P> </P>"
  Else //具体显示每一页
   Recordset1.moveAbsolute(recordPtr) //移动记录指针。
   empID = Recordset1.fields.getValue("emp ID")
   empLName = Recordset1.fields.getValue("first name")
   empFName = Recordset1.fields.getValue("last name")

   Table1.rows(rowCtr).cells(0).innerText = recordPtr ’ Counter
   Table1.rows(rowCtr).cells(1).innerText = empID
   Table1.rows(rowCtr).cells(2).innerText = empLName
   Table1.rows(rowCtr).cells(3).innerText = empFName
  End If
  rowCtr = rowCtr + 1
Next
End Sub
   '另外,我们还需要在window对象的onload事件中编写如下脚本:

For rowCtr = 1 to gRecordsPerPage
  Table1.insertRow(rowCtr) ’ 插一新列
  For cellCtr = 0 to 3
   Table1.rows(rowCtr).insertCell()
  Next
Next

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


我来说两句:

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


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