ASP项目中的公共翻页模块
程序员文章站
2023-11-07 11:36:10
在大型的asp项目中,很多的页面都涉及到翻页功能。如果每个页面都写一个翻页的程序的话,这样的工作即降低了工作效率,也不利于工程的模块化,不能使代码重用。因此,把翻页这样的功...
在大型的asp项目中,很多的页面都涉及到翻页功能。如果每个页面都写一个翻页的程序的话,这样的工作即降低了工作效率,也不利于工程的模块化,不能使代码重用。因此,把翻页这样的功能模块化是很有必要的。
设计方法:
1、调用该模块时,只需要传递记录集和每页显示的记录的条数;
2、可以点击链接进行翻页,也可以直接输入页码,回车后翻页;
3、不要考虑文件名,程序的每次翻页都能在当前页面。
想清楚了上面3个问题,我们的公共翻页模块就可以动手了。
<%
'+++++++++++++++++++++++++++++++++++++
'◆模块名称: 公共翻页模块
'◆文 件 名: turnpage.asp
'◆传入参数: rs_tmp (记录集), pagesize (每页显示的记录条数)
'◆输 出: 记录集翻页显示功能
'+++++++++++++++++++++++++++++++++++++
'
sub turnpage(byref rs_tmp,pagesize) 'rs_tmp 记录集 ; pagesize 每页显示的记录条数;
dim totalpage '总页数
dim pageno '当前显示的是第几页
dim recordcount '总记录条数
rs_tmp.pagesize = pagesize
recordcount = rs_tmp.recordcount
totalpage = int(recordcount / pagesize * -1)*-1
pageno = request.querystring ("pageno")
'直接输入页数跳转;
if request.form("pageno")<>"" then pageno = request.form("pageno")
'如果没有选择第几页,则默认显示第一页;
if pageno = "" then pageno = 1
if recordcount <> 0 then
rs_tmp.absolutepage = pageno
end if
'获取当前文件名,使得每次翻页都在当前页面进行;
dim filename,postion
filename = request.servervariables("script_name")
postion = instrrev(filename,"/")+1
'取得当前的文件名称,使翻页的链接指向当前文件;
filename = mid(filename,postion)
%>
<table border=0 width='100%'>
<tr>
<td align=left> 总页数:<font color=#ff3333><%=totalpage%></font>页
当前第<font color=#ff3333><%=pageno%></font>页</td>
<td align="right">
<%if recordcount = 0 or totalpage = 1 then
response.write "首页|前页|后页|末页"
else%>
<a href="<%=filename%>?pageno=1">首页|</a>
<%if pageno - 1 = 0 then
response.write "前页|"
else%>
<a href="<%=filename%>?pageno=<%=pageno-1%>">前页|</a>
<%end if
if pageno+1 > totalpage then
response.write "后页|"
else%>
<a href="<%=filename%>?pageno=<%=pageno+1%>">后页|</a>
<%end if%>
<a href="<%=filename%>?pageno=<%=totalpage%>">末页</a>
<%end if%></td>
<td width=95>转到第
<%if totalpage = 1 then%>
<input type=text name=pageno size=3 readonly disabled style="background:#d3d3d3">
<%else%>
<input type=text name=pageno size=3 value="" title=请输入页号,然后回车>
<%end if%>页
</td>
</tr>
</table>
<%end sub%>
当然,大家可以把翻页的链接做成图片按钮,这样的话也面就更加美观了。
调用方法:
1、在程序开始或要使用翻页的地方包含翻页模块文件;
2、定义变量:rowcount,每页显示的记录条数
3、调用翻页过程:call turnpage(记录集,rowcount)
4、在do while 循环输出记录集的条件中加上" rowcount > 0 " 条件
5、在循环结束 "loop前" 加上: rowcount = rowcount - 1
'-----------------------------------------------------
调用范例:
文件名:news.asp
<%
dim conn,rs_news
set conn = server.createobject("adodb.connection")
conn.open "cpm","cpm","cpm"
dim sql
sql = "select * from news"
set rs_news = server.createobject("adodb.recordset")
rs_news.open sql,conn,1,3 '获取的记录集
'公共翻页模块开始%>
<!--#include file=../public/turnpage.asp-->
<%
dim rowcount
rowcount = 10 '每页显示的记录条数
call turnpage(rs_news,rowcount)
'公共翻页模块结束%>
<table width=100%>
<tr>
<td>新闻编号</td>
<td>新闻标题</td>
<td>发布日期</td>
<tr>
<%
if not rs_news.eof
do while not rs_news.eof and rowcount>0
%>
<tr>
<td><%=rs_news("id")%></td>
<td><%=rs_news("name")%></td>
<td><%=rs_news("date")%></td>
<tr>
<%
rowcount = rowcount - 1
rs_news.movenext
loop
end if
%>
修正:
<%
if not rs_news.eof then
do while not rs_news.eof and rowcount>0
%>
而那个公共模块缺<form>,改后:
<%
sub turnpage(byref rs_tmp,pagesize) 'rs_tmp 记录集 ; pagesize 每页显示的记录条数;
dim totalpage '总页数
dim pageno '当前显示的是第几页
dim recordcount '总记录条数
rs_tmp.pagesize = pagesize
recordcount = rs_tmp.recordcount
totalpage = int(recordcount / pagesize * -1)*-1
pageno = request.querystring ("pageno")
'直接输入页数跳转;
if request.form("pageno")<>"" then pageno = request.form("pageno")
'如果没有选择第几页,则默认显示第一页;
if pageno = "" then pageno = 1
if recordcount <> 0 then
rs_tmp.absolutepage = pageno
end if
'获取当前文件名,使得每次翻页都在当前页面进行;
dim filename,postion
filename = request.servervariables("script_name")
postion = instrrev(filename,"/")+1
filename = mid(filename,postion)
%>
<table border=0 width='100%'>
<tr>
<td width="258" align=left> 总页数:<font color=#ff3333><%=totalpage%></font>页
当前第<font color=#ff3333><%=pageno%></font>页 总共<%=recordcount%>条 </td>
<td width="308" align="right"> <div align="center">
<%if recordcount = 0 or totalpage = 1 then
response.write "首页|前页|后页|末页"
else%>
<a href="<%=filename%>?pageno=1">首页|</a>
<%if pageno - 1 = 0 then
response.write "前页|"
else%>
<a href="<%=filename%>?pageno=<%=pageno-1%>">前页|</a>
<%end if
if pageno+1 > totalpage then
response.write "后页|"
else%>
<a href="<%=filename%>?pageno=<%=pageno+1%>">后页|</a>
<%end if%>
<a href="<%=filename%>?pageno=<%=totalpage%>">末页</a>
<%end if%>
</div></td>
<td width=189><form name="form1" method="post" action=""> 转到第 <% if totalpage = 1 then%>
<input type=text name=pageno size=3 readonly disabled style="background:#d3d3d3">
<input type="submit" name="submit" value="go" disabled style="background:#d3d3d3">
<%else%>
<input type=text name=pageno size=3 >
<input type="submit" name="submit" value="go">
<%end if%>
</form>
页
</td>
</tr>
</table>
<%end sub%>
设计方法:
1、调用该模块时,只需要传递记录集和每页显示的记录的条数;
2、可以点击链接进行翻页,也可以直接输入页码,回车后翻页;
3、不要考虑文件名,程序的每次翻页都能在当前页面。
想清楚了上面3个问题,我们的公共翻页模块就可以动手了。
<%
'+++++++++++++++++++++++++++++++++++++
'◆模块名称: 公共翻页模块
'◆文 件 名: turnpage.asp
'◆传入参数: rs_tmp (记录集), pagesize (每页显示的记录条数)
'◆输 出: 记录集翻页显示功能
'+++++++++++++++++++++++++++++++++++++
'
sub turnpage(byref rs_tmp,pagesize) 'rs_tmp 记录集 ; pagesize 每页显示的记录条数;
dim totalpage '总页数
dim pageno '当前显示的是第几页
dim recordcount '总记录条数
rs_tmp.pagesize = pagesize
recordcount = rs_tmp.recordcount
totalpage = int(recordcount / pagesize * -1)*-1
pageno = request.querystring ("pageno")
'直接输入页数跳转;
if request.form("pageno")<>"" then pageno = request.form("pageno")
'如果没有选择第几页,则默认显示第一页;
if pageno = "" then pageno = 1
if recordcount <> 0 then
rs_tmp.absolutepage = pageno
end if
'获取当前文件名,使得每次翻页都在当前页面进行;
dim filename,postion
filename = request.servervariables("script_name")
postion = instrrev(filename,"/")+1
'取得当前的文件名称,使翻页的链接指向当前文件;
filename = mid(filename,postion)
%>
<table border=0 width='100%'>
<tr>
<td align=left> 总页数:<font color=#ff3333><%=totalpage%></font>页
当前第<font color=#ff3333><%=pageno%></font>页</td>
<td align="right">
<%if recordcount = 0 or totalpage = 1 then
response.write "首页|前页|后页|末页"
else%>
<a href="<%=filename%>?pageno=1">首页|</a>
<%if pageno - 1 = 0 then
response.write "前页|"
else%>
<a href="<%=filename%>?pageno=<%=pageno-1%>">前页|</a>
<%end if
if pageno+1 > totalpage then
response.write "后页|"
else%>
<a href="<%=filename%>?pageno=<%=pageno+1%>">后页|</a>
<%end if%>
<a href="<%=filename%>?pageno=<%=totalpage%>">末页</a>
<%end if%></td>
<td width=95>转到第
<%if totalpage = 1 then%>
<input type=text name=pageno size=3 readonly disabled style="background:#d3d3d3">
<%else%>
<input type=text name=pageno size=3 value="" title=请输入页号,然后回车>
<%end if%>页
</td>
</tr>
</table>
<%end sub%>
当然,大家可以把翻页的链接做成图片按钮,这样的话也面就更加美观了。
调用方法:
1、在程序开始或要使用翻页的地方包含翻页模块文件;
2、定义变量:rowcount,每页显示的记录条数
3、调用翻页过程:call turnpage(记录集,rowcount)
4、在do while 循环输出记录集的条件中加上" rowcount > 0 " 条件
5、在循环结束 "loop前" 加上: rowcount = rowcount - 1
'-----------------------------------------------------
调用范例:
文件名:news.asp
<%
dim conn,rs_news
set conn = server.createobject("adodb.connection")
conn.open "cpm","cpm","cpm"
dim sql
sql = "select * from news"
set rs_news = server.createobject("adodb.recordset")
rs_news.open sql,conn,1,3 '获取的记录集
'公共翻页模块开始%>
<!--#include file=../public/turnpage.asp-->
<%
dim rowcount
rowcount = 10 '每页显示的记录条数
call turnpage(rs_news,rowcount)
'公共翻页模块结束%>
<table width=100%>
<tr>
<td>新闻编号</td>
<td>新闻标题</td>
<td>发布日期</td>
<tr>
<%
if not rs_news.eof
do while not rs_news.eof and rowcount>0
%>
<tr>
<td><%=rs_news("id")%></td>
<td><%=rs_news("name")%></td>
<td><%=rs_news("date")%></td>
<tr>
<%
rowcount = rowcount - 1
rs_news.movenext
loop
end if
%>
修正:
<%
if not rs_news.eof then
do while not rs_news.eof and rowcount>0
%>
而那个公共模块缺<form>,改后:
<%
sub turnpage(byref rs_tmp,pagesize) 'rs_tmp 记录集 ; pagesize 每页显示的记录条数;
dim totalpage '总页数
dim pageno '当前显示的是第几页
dim recordcount '总记录条数
rs_tmp.pagesize = pagesize
recordcount = rs_tmp.recordcount
totalpage = int(recordcount / pagesize * -1)*-1
pageno = request.querystring ("pageno")
'直接输入页数跳转;
if request.form("pageno")<>"" then pageno = request.form("pageno")
'如果没有选择第几页,则默认显示第一页;
if pageno = "" then pageno = 1
if recordcount <> 0 then
rs_tmp.absolutepage = pageno
end if
'获取当前文件名,使得每次翻页都在当前页面进行;
dim filename,postion
filename = request.servervariables("script_name")
postion = instrrev(filename,"/")+1
filename = mid(filename,postion)
%>
<table border=0 width='100%'>
<tr>
<td width="258" align=left> 总页数:<font color=#ff3333><%=totalpage%></font>页
当前第<font color=#ff3333><%=pageno%></font>页 总共<%=recordcount%>条 </td>
<td width="308" align="right"> <div align="center">
<%if recordcount = 0 or totalpage = 1 then
response.write "首页|前页|后页|末页"
else%>
<a href="<%=filename%>?pageno=1">首页|</a>
<%if pageno - 1 = 0 then
response.write "前页|"
else%>
<a href="<%=filename%>?pageno=<%=pageno-1%>">前页|</a>
<%end if
if pageno+1 > totalpage then
response.write "后页|"
else%>
<a href="<%=filename%>?pageno=<%=pageno+1%>">后页|</a>
<%end if%>
<a href="<%=filename%>?pageno=<%=totalpage%>">末页</a>
<%end if%>
</div></td>
<td width=189><form name="form1" method="post" action=""> 转到第 <% if totalpage = 1 then%>
<input type=text name=pageno size=3 readonly disabled style="background:#d3d3d3">
<input type="submit" name="submit" value="go" disabled style="background:#d3d3d3">
<%else%>
<input type=text name=pageno size=3 >
<input type="submit" name="submit" value="go">
<%end if%>
</form>
页
</td>
</tr>
</table>
<%end sub%>
下一篇: 冷藏樱桃怎样做效果好?以下方法要记牢!