ASP通用分页函数
2005-09-01 20:10
351 查看
'ASP通用翻页函数 作者:天地小子 2005.7.7 twt326@163.com
'输入查询语句,数据库名,数据库连接,当前页号,链接字符串,列表条数,查询条件(默认为空)
'显示上下页导航链接,有下拉框显示页数
'这个函数是根据天地PHP通用翻页函数1直接转变的,其中使用了CSDN BBS上一个大虾的SQL高效分页方案技术
':)由于这里没有找到那篇帖子,所以老兄请勿见怪了。配合下面的函数使用起来更方便
sub getnav(dbname,conn,tnowpage,link,pagelistnum,wherewords)
dim sql,trst,sumrows,pagesum,tmphead,showdown,selectcode,i
sql="select count(*) as recnum from "&dbname
if wherewords<>"" then sql=sql & " where " & wherewords
set trst=Server.CreateObject("adodb.recordset")
trst.open sql,conn,1,1
sumrows=trst("recnum")
pagesum=sumrows/pagelistnum+1
if sumrows mod pagelistnum=0 then pagesum=sumrows/pagelistnum
tmphead="<a href="&link&"&page="
if cint(tnowpage)<2 then
showdown="<table><form name='selform' method='post' action=''><tr><td>首页 上页 "
else
showdown="<table><form name='selform' method='post' action=''><tr><td>"&tmphead&"1>首页</a> "&tmphead&(tnowpage-1)&">上页</a> "
end if
if cint(tnowpage)<cint(pagesum) then
showdown=showdown&tmphead&(tnowpage+1)&">下页</a> "&tmphead&pagesum&">末页</a> "
else
showdown=showdown&"下页 末页 "
end if
'获取下拉框转向代码
selectcode="<script language='javascript'>function gopagenav(page){ location='"&link&"&page='+page; }</script><select name='selpage' id='selpage' onChange='javascript:gopagenav(this.value);'>"
for i=1 to pagesum
selectcode=selectcode&"<option value='"&i&"'"
if cInt(i)=cint(tnowpage) then selectcode=selectcode&" selected"
selectcode=selectcode&">= "&i&" =</option>"
next
selectcode=selectcode&"</select>"
showdown=showdown&"第</td><td>"&selectcode&"</td><td>页,共"&pagesum&"页 总记录数:"&sumrows&"</td></tr></form></table>"
response.write showdown
trst.close
set trst=nothing
end sub
'根据参数生成查询语句,查询某页数据
'参数:当前页,每页显示条数,数据表名(多个用逗号隔开),需要选择的字段名(用逗号隔开),查询条件(无条件时为空字串),ID主键,排序方式(ASC正序或DESC倒序)
'使用示例
' sql=getfysql(page,pagelistnum,"tbl_message,tbl_login","tbl_message.*,tbl_login.l_user","tbl_message.m_lid=tbl_login.l_id","m_id","DESC")
' getnav "tbl_message",conn,page,"adminmessage.asp?act=",pagelistnum,addnavwords
function getfysql(tnowpage,tpagelistnum,tblname,selfields,wherewords,keyfield,sorttype)
dim fh,hs
if wherewords="" then wherewords="1=1"
fh=">":hs="max"
if sorttype="DESC" then
fh="<"
hs="min"
end if
if (tnowpage-1)*tpagelistnum=0 then
sql="select top "&tpagelistnum&" "&selfields&" from "&tblname&" where "&wherewords&" order by "&keyfield&" "&sorttype
else
sql="select top "&tpagelistnum&" "&selfields&" from "&tblname&" where "&wherewords& " and " &keyfield&fh&"(select "&hs&"("&keyfield&") from (select top "&((tnowpage-1)*tpagelistnum)&" "&keyfield&" from "&tblname&" where "&wherewords& " order by "&keyfield&" "&sorttype&") as T) order by "&keyfield&" "&sorttype
end if
getfysql=sql
end function
'输入查询语句,数据库名,数据库连接,当前页号,链接字符串,列表条数,查询条件(默认为空)
'显示上下页导航链接,有下拉框显示页数
'这个函数是根据天地PHP通用翻页函数1直接转变的,其中使用了CSDN BBS上一个大虾的SQL高效分页方案技术
':)由于这里没有找到那篇帖子,所以老兄请勿见怪了。配合下面的函数使用起来更方便
sub getnav(dbname,conn,tnowpage,link,pagelistnum,wherewords)
dim sql,trst,sumrows,pagesum,tmphead,showdown,selectcode,i
sql="select count(*) as recnum from "&dbname
if wherewords<>"" then sql=sql & " where " & wherewords
set trst=Server.CreateObject("adodb.recordset")
trst.open sql,conn,1,1
sumrows=trst("recnum")
pagesum=sumrows/pagelistnum+1
if sumrows mod pagelistnum=0 then pagesum=sumrows/pagelistnum
tmphead="<a href="&link&"&page="
if cint(tnowpage)<2 then
showdown="<table><form name='selform' method='post' action=''><tr><td>首页 上页 "
else
showdown="<table><form name='selform' method='post' action=''><tr><td>"&tmphead&"1>首页</a> "&tmphead&(tnowpage-1)&">上页</a> "
end if
if cint(tnowpage)<cint(pagesum) then
showdown=showdown&tmphead&(tnowpage+1)&">下页</a> "&tmphead&pagesum&">末页</a> "
else
showdown=showdown&"下页 末页 "
end if
'获取下拉框转向代码
selectcode="<script language='javascript'>function gopagenav(page){ location='"&link&"&page='+page; }</script><select name='selpage' id='selpage' onChange='javascript:gopagenav(this.value);'>"
for i=1 to pagesum
selectcode=selectcode&"<option value='"&i&"'"
if cInt(i)=cint(tnowpage) then selectcode=selectcode&" selected"
selectcode=selectcode&">= "&i&" =</option>"
next
selectcode=selectcode&"</select>"
showdown=showdown&"第</td><td>"&selectcode&"</td><td>页,共"&pagesum&"页 总记录数:"&sumrows&"</td></tr></form></table>"
response.write showdown
trst.close
set trst=nothing
end sub
'根据参数生成查询语句,查询某页数据
'参数:当前页,每页显示条数,数据表名(多个用逗号隔开),需要选择的字段名(用逗号隔开),查询条件(无条件时为空字串),ID主键,排序方式(ASC正序或DESC倒序)
'使用示例
' sql=getfysql(page,pagelistnum,"tbl_message,tbl_login","tbl_message.*,tbl_login.l_user","tbl_message.m_lid=tbl_login.l_id","m_id","DESC")
' getnav "tbl_message",conn,page,"adminmessage.asp?act=",pagelistnum,addnavwords
function getfysql(tnowpage,tpagelistnum,tblname,selfields,wherewords,keyfield,sorttype)
dim fh,hs
if wherewords="" then wherewords="1=1"
fh=">":hs="max"
if sorttype="DESC" then
fh="<"
hs="min"
end if
if (tnowpage-1)*tpagelistnum=0 then
sql="select top "&tpagelistnum&" "&selfields&" from "&tblname&" where "&wherewords&" order by "&keyfield&" "&sorttype
else
sql="select top "&tpagelistnum&" "&selfields&" from "&tblname&" where "&wherewords& " and " &keyfield&fh&"(select "&hs&"("&keyfield&") from (select top "&((tnowpage-1)*tpagelistnum)&" "&keyfield&" from "&tblname&" where "&wherewords& " order by "&keyfield&" "&sorttype&") as T) order by "&keyfield&" "&sorttype
end if
getfysql=sql
end function
相关文章推荐
- Asp.Net实现的通用分页函数
- ASP 通用文章分页函数(非记录集分页), 返回多个结果, 字典实现 By shawl.qiu
- Asp.Net实现的通用分页函数
- ASP通用分页样式函数代码
- ASP通用分页样式函数代码
- C#ASP.NET 通用扩展函数之 IsWhat 简单好用
- ASP.NETC#通用扩展函数之TypeParse 类型转换方便多了
- Asp.net实现通用以及高效的分页方法
- ASP.NET 防注入的两个通用函数
- ASP.NET C# 后台输出的带页码的分页函数(不用控件)
- [推荐]ASP编程通用函数收藏大全第1/2页
- ASP.NET长文章分页显示函数
- ASP.NET长文章实现通用以及高效的分页方法
- ASP VBScript 分页函数 by Stabx, 第三版
- Asp常用通用函数之生成时间的整数
- ASP的分页函数
- 一个实用的ASP分页函数
- Asp.net 高性能数据分页函数,调用示例
- Asp.net 通用万级数据分页代码[修正下载地址]
- 创建一个ASP通用分页类(二)