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
内容版权声明:除非注明,否则皆为本站原创文章。