ASP项目中的公共翻页模块
2018-09-06 11:16
在大型的ASP项目中,很多的页面都涉及到翻页功能。如果每个页面都写一个翻页的程序的话,这样的工作即降低了工作效率,也不利于工程的模块化,不能使代码重用。因此,把翻页这样的功能模块化是很有必要的。
设计方法:
1、调用该模块时,只需要传递记录集和每页显示的记录的条数;
2、可以点击链接进行翻页,也可以直接输入页码,回车后翻页;
3、不要考虑文件名,程序的每次翻页都能在当前页面。
想清楚了上面3个问题,我们的公共翻页模块就可以动手了。
<%
+++++++++++++++++++++++++++++++++++++
◆模块名称:公共翻页模块
◆文件名:TurnPage.asp
◆传入参数:Rs_tmp(记录集),PageSize(每页显示的记录条数)
◆输出:记录集翻页显示功能
+++++++++++++++++++++++++++++++++++++
SubTurnPage(ByRefRs_tmp,PageSize)Rs_tmp记录集;PageSize每页显示的记录条数;
DimTotalPage总页数
DimPageNo当前显示的是第几页
DimRecordCount总记录条数
Rs_tmp.PageSize=PageSize
RecordCount=Rs_tmp.RecordCount
TotalPage=INT(RecordCount/PageSize*-1)*-1
PageNo=Request.QueryString(PageNo)
直接输入页数跳转;
IfRequest.Form(PageNo)<>ThenPageNo=Request.Form(PageNo)
如果没有选择第几页,则默认显示第一页;
IfPageNo=thenPageNo=1
IfRecordCount<>0then
Rs_tmp.AbsolutePage=PageNo
EndIf
获取当前文件名,使得每次翻页都在当前页面进行;
DimfileName,postion
fileName=Request.ServerVariables(script_name)
postion=InstrRev(fileName,/)+1
取得当前的文件名称,使翻页的链接指向当前文件;
fileName=Mid(fileName,postion)
%>
<tableborder=0width=100%>
<tr>
<tdalign=left>总页数:<fontcolor=#ff3333><%=TotalPage%></font>页
当前第<fontcolor=#ff3333><%=PageNo%></font>页</td>
<tdalign=right>
<%IfRecordCount=0orTotalPage=1Then
Response.Write首页前页后页末页
Else%>
<ahref=<%=fileName%>?PageNo=1>首页</a>
<%IfPageNo-1=0Then
Response.Write前页
Else%>
<ahref=<%=fileName%>?PageNo=<%=PageNo-1%>>前页</a>
<%EndIf
IfPageNo+1>TotalPageThen
Response.Write后页
Else%>
<ahref=<%=fileName%>?PageNo=<%=PageNo+1%>>后页</a>
<%EndIf%>
<ahref=<%=fileName%>?PageNo=<%=TotalPage%>>末页</a>
<%EndIf%></td>
<tdwidth=95>转到第
<%IfTotalPage=1Then%>
<inputtype=textname=PageNosize=3readonlydisabledstyle=background:#d3d3d3>
<%Else%>
<inputtype=textname=PageNosize=3value=title=请输入页号,然后回车>
<%EndIf%>页
</td>
</tr>
</table>
<%EndSub%>
当然,大家可以把翻页的链接做成图片按钮,这样的话也面就更加美观了。
调用方法:
1、在程序开始或要使用翻页的地方包含翻页模块文件;
2、定义变量:RowCount,每页显示的记录条数
3、调用翻页过程:CallTurnPage(记录集,RowCount)
4、在DoWhile循环输出记录集的条件中加上RowCount>0条件
5、在循环结束Loop前加上:RowCount=RowCount-1
-----------------------------------------------------
调用范例:
文件名:News.asp
<%
DimConn,Rs_News
Conn.Opencpm,cpm,cpm
DimSql
Sql=Select*fromNews
SetRs_News=Server.CreateObject(ADODB.RECORDSET)
Rs_News.OpenSql,Conn,1,3获取的记录集
公共翻页模块开始%>
<!--#includefile=../Public/TurnPage.asp-->
<%
DimRowCount
RowCount=10每页显示的记录条数
CallTurnPage(Rs_News,RowCount)
公共翻页模块结束%>
<tablewidth=100%>
<tr>
<td>新闻编号</td>
<td>新闻标题</td>
<td>发布日期</td>
<tr>
<%
IfNotRs_News.eof
DowhileNotRs_News.eofandRowCount>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
EndIf
%>
修正:
<%
IfNotRs_News.eofthen
DowhileNotRs_News.eofandRowCount>0
%>
而那个公共模块缺<form>,改后:
<%
SubTurnPage(ByRefRs_tmp,PageSize)Rs_tmp记录集;PageSize每页显示的记录条数;
DimTotalPage总页数
DimPageNo当前显示的是第几页
DimRecordCount总记录条数
Rs_tmp.PageSize=PageSize
RecordCount=Rs_tmp.RecordCount
TotalPage=INT(RecordCount/PageSize*-1)*-1
PageNo=Request.QueryString(PageNo)
直接输入页数跳转;
IfRequest.Form(PageNo)<>ThenPageNo=Request.Form(PageNo)
如果没有选择第几页,则默认显示第一页;
IfPageNo=thenPageNo=1
IfRecordCount<>0then
Rs_tmp.AbsolutePage=PageNo
EndIf
获取当前文件名,使得每次翻页都在当前页面进行;
DimfileName,postion
fileName=Request.ServerVariables(script_name)
postion=InstrRev(fileName,/)+1
fileName=Mid(fileName,postion)
%>
<tableborder=0width=100%>
<tr>
<tdwidth=258align=left>总页数:<fontcolor=#ff3333><%=TotalPage%></font>页
当前第<fontcolor=#ff3333><%=PageNo%></font>页总共<%=RecordCount%>条</td>
<tdwidth=308align=right><divalign=center>
<%IfRecordCount=0orTotalPage=1Then
Response.Write首页前页后页末页
Else%>
<ahref=<%=fileName%>?PageNo=1>首页</a>
<%IfPageNo-1=0Then
Response.Write前页
Else%>
<ahref=<%=fileName%>?PageNo=<%=PageNo-1%>>前页</a>
<%EndIf
IfPageNo+1>TotalPageThen
Response.Write后页
Else%>
<ahref=<%=fileName%>?PageNo=<%=PageNo+1%>>后页</a>
<%EndIf%>
<ahref=<%=fileName%>?PageNo=<%=TotalPage%>>末页</a>
<%EndIf%>
</div></td>
<tdwidth=189><formname=form1method=postaction=>转到第<%IfTotalPage=1Then%>
<inputtype=textname=PageNosize=3readonlydisabledstyle=background:#d3d3d3>
<inputtype=submitname=Submitvalue=Godisabledstyle=background:#d3d3d3>
<%Else%>
<inputtype=textname=PageNosize=3>
<inputtype=submitname=Submitvalue=Go>
<%EndIf%>
</form>
页
</td>
</tr>
</table>
<%EndSub%>