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

第五种: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

      

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/2248.html