欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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%>