优化过的asp翻页代码

来源:互联网 发布:dcs编程语言 编辑:程序博客网 时间:2024/05/17 06:30

分页程序无疑是许多网络程序功能中一个比较麻烦的东西,事实上现在为止绝大部分人还是在使用传统的分页方法(Rs.PageSize=xx),而了解数据库操作的人都知道,这种传统方式有个弊端:第一次打开页面时,它会预读所有的记录集,这当在数据大的时候,这将是致命的,而且接下来的翻页速度也会非常慢,很占用资源。对于十万数量级以上的数据库这种传统分页方式已经显得非常无力,更别说百万级了(根本没法操作)。基于这种原因,促使我做了本通用程序。

<%
'url为翻页地址后缀“&”开头
url="&classid="&classid&""
%>


sql配置代码 (倒序排列)

'---------------------------------------------------------------------------------------开始
'配置
'sql条件 没 请写 1=1
sql="1=1"
'统计字段
sql_id="id"
'显示字段
sql_Field="id,title"
'查询表名
sql_table="table"
'排序字段
sql_order="id"
'每页记录
PageSize=30
'获得总数
set rs=conn.execute("SELECT count("&sql_id&") from "&sql_table&" where "&sql&" ")
if not rs.eof then
recordcount=rs(0)
end if
rs.close
set rs=nothing
'总页数
pagecount=Abs(Int(recordcount/PageSize*(-1)))
'获得当前页码
if request("page") = "" then
 page = 1
else
 page = cint(request("page"))
 if recordcount< page*PageSize then
 page=pagecount
 end if
end if
'sql语句
if page=1 then
sql="SELECT TOP "&PageSize&" "&sql_Field&" from "&sql_table&" where "&sql&" order by "&sql_order&" desc"
else
sql="SELECT TOP "&PageSize&" "&sql_Field&" from "&sql_table&" where ("&sql_order&" <(SELECT MIN("&sql_order&") FROM (SELECT TOP "&((Page-1)*PageSize)&" "&sql_order&" FROM "&sql_table&" where "&sql&" order by "&sql_order&" desc) AS tblTMP)) and "&sql&" order by "&sql_order&" desc"
end if
'---------------------------------------------------------------------------------------结束


显示代码


<%
While Not Rs.Eof
%>
<%=rs(0)%>:<%=rs(1)%><br/>
<%
Rs.MoveNext
Wend
%>


翻页

 <%
response.write "<table><tr><td>"
response.Write "当前:<font color=""#FF0000"">"&page&"</font>/"&cstr(pagecount)&","

if page = "1" then
 response.write " 首页 上页 "
else
 response.write "<a href='?page=1"&url&"'>首页</a> "
 response.write "<a href='?page="+cstr(cint(page-1))+""&url&"'>上页</a> "
end if
if cint(page) = pagecount then
 response.write " 下页 尾页 "
else
 response.write "<a href='?page="+cstr(cint(page+1))+""&url&"'>下页</a> "
 response.write "<a href='?page="+cstr(pagecount)+""&url&"'>尾页</a> "
end if
response.Write " 直接到"
response.write "</td><form name=""form_fy""><td>"
response.Write("<select name=""select_fy"" onChange=""MM_jumpMenu(this)"" >")
for i=1 to pagecount
if cint(page)=cint(i) then
response.Write("<option value=""?page="&i&""&url&""" selected>第"&i&"页</option>")
else
response.Write("<option value=""?page="&i&""&url&""">第"&i&"页</option>")
end if
next
response.Write(" </select> ")
response.write("</td></form></tr></table>")
response.write("<script type=""text/JavaScript"">" & vbcrlf)
response.write("<!--" & vbcrlf)
response.write("function MM_jumpMenu(selectname){" & vbcrlf)
response.write("  var myindex=selectname.selectedIndex;" & vbcrlf)
response.write("  if (myindex == -1){return;}" & vbcrlf)
response.write("  window.open(selectname.options[myindex].value,""_self"");" & vbcrlf)
response.write("}" & vbcrlf)
response.write("//-->" & vbcrlf)
response.write("</script>")
%>
原创粉丝点击