当前位置: 首页 > 图文教程 > 网络编程 > ASP > 利用ASP实现对表的分页浏览(下)

ASP
asp分页(自己整理的2个分页程序)
ASP常用的系统配置函数
雨哲防采集策略之列表篇
雨哲浅谈关于防采集而不影响收录内容篇
asp数据库连接函数
ajax XMLHTTP Post Form时的表单乱码综合解决
ASP注入详细命令40条
用ASP实现MSSQL用户密码破解
ASP创建对象的两种方法比较
ASP字符串转换为整形、双精度型、布尔
ASP计算str2在str1中出现的次数
asp采集抓取网上房产信息的代码
ASP注册登陆实例代码
ASP中使用FileSystemObject时提高性能的方法
分享一个好东东,动态Include文件 (Dynamic File Includes)
解决 JScript 中使用日期类型数据时出现类型错误的问题
在ASP里面创建GUID
在JScript中使用缓存技术的实际代码
ASP javascript Application对象的Contents和StaticObjects做Cache的一些经验
海阳2006+功能中的潜水王

利用ASP实现对表的分页浏览(下)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 152 ::
收藏到网摘: n/a

  一.关于参数传递。假如表中有46条记录,然后我们在地址栏中敲入http.//localhost/display.asp?line=10&page=2(假设这是正确的路径)肯定浏览器将给我们显示第二页的十条记录。但是如果在地址栏中只敲入http.//localhost/display.asp,浏览器却给我们一个出错信息。如何解决呢?我们必须在读取这些参数时加一个判断,如果参数是空的,就赋给它一个初值,以防出错。将“读取用户要求的显示方式”部分用以下代码代替:


<%
if request("page")<>"" then
page=cint(request("page"))
else
page=1 '-------如果参数page为空,就给它赋值1
end if
if request("line")<>"" then
line=cint(request("line"))
else
line=10 '-------如果参数line为空,就给它赋值10
end if
%>


  二.参数的合理性问题。如果我们在地址栏中敲入http.//localhost/display.asp?line=20&page=4会出现什么情况呢?浏览器报错。因为表中只有46条记录,而我们要它以每页显示二十条,第四页的二十条记录,也就是第六十一条到第八十条记录。显然会出错。同样情况还会出现在导航条中,如果当前浏览器中显示的是以每页十条,第四页的内容,我们去设定它以每页二十条显示,同样也会出错。解决方法还是一样的,先判断一下参数的合理性,然后再设置显示方式。将“按用户要求设定好显示方式”部分用以下代码代替。

<%
if page>(rs.RecordCount-1)\line+1 then
'-------通过计算可知,最大页数=(总记录数-1)\每页行数+1
response.write("error!") '-------如果参数不合实际,输出"error!"
response.end '-------终止程序
end if
rs.PageSize=line
rs.AbsolutePage=page

%>


  三.验证表单域。导航条中的两个输入文本框输入的都必须是整数,否则也会出错。我们可以利用FrontPage的验证表单域功能开完成,这里就不多说了。

  四.优化。到目前为止,这个程序还有一个缺点。在数据库的存取过程中,最花时间的要数是数据库的打开和Recordset对象的建立,而这个程序每次执行都会打开数据库及建立Recordset对象,极大的降低了效率,一旦访问量增大,这个程序也就是去了价值。解决的办法是:第一次执行程序时,打开数据库及建立Recordset对象,并将这些存在session中,下次执行时直接将session中的值返回就行了。用以下代码代替“打开数据库及表”部分。

<%
if not isobject(session("conn")) then
set conn=server.createobject("ADODB.Connection")
filepath=server.mappath("abc.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & filepath
set rs=server.createobject("ADODB.Recordset")
rs.open "main",conn,3,2
set session("conn")=conn
set session("rs")=rs
else
set conn=session("conn")
set rs=session("rs")
end if
%>  

   至此,一个比较“完美”的程序完成了。各位大虾有何高见?欢迎来信与我探讨。[email protected]