HI!你好,我是东莞网站建设_壹嘉壹,请问有什么可以帮助你的,你可以打电话给我哦。
营销型企业网站建设第一品牌
营销型企业网站建设专家
东莞网站建设企业营销型领航者   业务已覆盖:重庆 广州 深圳 长沙    咨询电话:0769-33250723 / 13724531865

你所在的位置:首页 > 网站建设技术 > 详情查看

一个高效率的ASP分页算法
来源:壹嘉壹 点击次数: 发表时间:2009-2-14 13:44:33


这篇文章要达到的目的就是,实现大数据分页浏览并最优化速度。

建立一个web 应用,分页浏览功能必不可少;这个闘,内容,时间 from 内容表。

但现在还有个问题,就是如何定位,Top 不可能自动给我们定位输出某个页,这就设计到了where 从句,根据一个特定条件输出正确的内容;注意:记录的 order by 排序是非常重要的,这个决定了这个算法的成败;

这里的演示是DESC 方式,倒序排列,比如网站的软件更新,就是最近的更新放最前面,而这个就是倒序方式。

OK,下面来看看实际代码,首先要确定是否为起始页。


dim strSQL,i,endID,isBeginPage
const Cnt_PageSize = 20 '定义每页记录的大小
'通过检查浏览器传递的Page 参数的值来判断是否为进入下一页的操作
isBeginPage = isEmpty(request("Page")) or request("Page")="" or request("Page")<>"next"
'这里是分页的核心
if isBeginPage then '如果是起始页
'查询=列出分类编码等于参数flbm 的记录,按倒序排列,并只列出前 Cnt_PageSize 笔 (Cnt_PageSize是常量定义,比如20)
strSQL = "select TOP " & Cnt_pageSize & " 自动编号,标题,内容,时间 from 内容表 where 分类编码= '" & TRIM(SQLEncode(request("flbm"))) & "' order by 自动编号 desc"
else '如果不是起始页
if request("Page")="next" then '这里这样写是为了加强代码的表现,如果参数为next ,则表示取下页内容
'查询=列出分类编码等于参数flbm的记录并且要小于自动编号endID (endID也是参数),并倒序排列,并只列出前 Cnt_PageSize 笔 (Cnt_PageSize是常量定义,比如20)
strSQL = "select TOP " & Cnt_pageSize & " 自动编号,标题,内容,时间 from 内容表 where 分类编码= '" & TRIM(SQLEncode(request("flbm"))) & "' and 自动编号<" & request("endID") & " order by 自动编号 desc"
End if
end if

'打开数据连接执行SQL 并建立记录集
set rs = Cnn.Execute(strSQL)
if not rs.Eof then '这里写入判断是否为Eof 可以不要,但是,在这里却有它的特殊意义
call TableTitle '这里是自写的函数,用于建立表格标记
call beginTr '这里是建立表格tr标记

for i=0 to rs.fields.Count-1 '遍历记录集字段
call AddCol(rs(i).name) '输出字段名
Next

call endTr

while not rs.eof '循环记录集内容,并输出
call beginTr

for i=0 to rs.fields.Count-1
call AddRow(ASPEncode(rs(i).value))
Next
call endTr
endID = rs("自动编号") '这里保存每次输出的自动编号值
rs.MoveNext
Wend
call TableBottom '到此为止,就简单的将记录集内容全部输出
'这里输出翻页标记,vbaIIF 是自写函数
原型为 function vbaIIF(a,b,c)
if a then
vbaIIF =b
else
vbaIIF =c
end if
end function

上一页的实现是通过脚本调用浏览器的功能 history.back(1) 实现,那么回页时并不需要在服务器端重新生成数据,速度不用考虑了。
在首页的时候,上一页的链接应该是无效的,通过 vbaIIF(isBeginPage,"disabled","") 实现,如果为首页,那么在标记中加入 disabled 属性 ,如果不是首页,则加入history.back(1); 脚本指令,用于回退浏览页。
下一页是传递Page 参数和endID参数,Page 设置为 next 表示为下一页的动作,endID 表示当前记录集的末尾编号,下页将由此分页。

response.Write("〈a href=""#"" onclick=""javascript:" & vbaIIF(isBeginPage,"","history.back(1);") & """ " & vbaIIF(isBeginPage," disabled ","") & "〉上一页〈/a〉|〈a href="/"TypeOptions.asp?flbm=" & request("flbm") & "&Page=next&endID=" & endID & """〉下一页〈/a〉")
else
'这里通过判断记录集是否为空来解决到末尾页还可以继续翻页的问题
if not isBeginPage then
'判断是否为空记录,并且不是起始页,那么生成回退页面的脚本,效果就是进入该页后将自动返回到上页。
response.Write "〈script language=javascript〉" & vbCrlf
Response.Write "history.back(1);" & vbCrlf
Response.Write "〈/script〉"
Response.End
else '如果是起始页记录就为空,则提示无内容
Response.Write "〈font color=blue〉该类别下无内容〈/font〉"
end if
end If


总结:通过前台脚本,SQL查询技巧,实现高性能的分页程序简单快速

希望同行提出更优秀实时数据分页算法



上一篇:值得收藏的一些ASP代码

下一篇:65个源代码网站



[S]网站设计知识  [Y]网站优化知识    [J]网站建设技术      [F]网站解决方案     [W]常见问题解答


关于我们 | 联系我们 | 付款方式 | 加入我们 | 友情链接 | 价格总览| 帮助中心 | xml地图

地址:东莞市南城鸿福路口鸿福广场A2009(新城市酒店20楼) 电话:0769-33250723 传真:0769-23605780
升级东莞网站策划-东莞网站设计-东莞做网站(东莞网站建设)-东莞网站优化-东莞网站维护 为一条龙服务

版权所有:壹嘉壹 2005-2010 All Rights Reserved
关键字:东莞网站建设 东莞营销型网站建设 营销网站建设 东莞网站策划 东莞网站设计 东莞做网站 东莞网站优化