ASP中实现分页显示的七种方法(5)
另外,我们还需要在window对象的onload事件中编写如下脚本:
For rowCtr = 1 to gRecordsPerPage Table1.insertRow(rowCtr) ' 插一新列 For cellCtr = 0 to 3 Table1.rows(rowCtr).insertCell() Next Next
第六种:服务器端控制翻页方法。
如果我们在服务器端对数据进行分页形成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
内容版权声明:除非注明,否则皆为本站原创文章。