怎样用ASP实现分页显示?

mudb2 2003-02-26 07:43:28
怎样用ASP实现分页显示?
...全文
72 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fason 2003-02-26
  • 打赏
  • 举报
回复
我收藏的一个函数
Function ExportPageInfo(ByRef rs,curpage,i,LinkFile)
Dim retval, j, pageNumber, BasePage

retval = "第" & curpage & "页/总" & rs.pagecount & "页 "
retval = retval & "本页" & i & "条/总" & rs.recordcount & "条 "

If curpage = 1 Then
retval = retval & "首页 前页 "
Else
retval = retval & "<a href='" & LinkFile & "page=1'>首页</a> <a href='" & LinkFile & "page=" & cstr(curpage - 1) & "'>前页</a> "
End If
If curpage = rs.pagecount Then
retval = retval & "后页 末页"
Else
retval = retval & "<a href='" & LinkFile & "page=" & cstr(curpage + 1) & "'>后页</a> <a href='" & LinkFile & "page=" & cstr(rs.pagecount) & "'>末页</a>"
End if

retval = retval & "<br>"
BasePage = (curpage \ 10) * 10
If BasePage > 0 Then retval = retval & " <a href='" & LinkFile & "page=" & (BasePage - 9) & "'><<</a>"
For j = 1 to 10
pageNumber = BasePage + j
If PageNumber > rs.pagecount Then Exit For
If pageNumber = Cint(curpage) Then
retval = retval & " <font color='#FF0000'>" & pageNumber & "</font>"
Else
retval = retval & " <a href='" & LinkFile & "page=" & pageNumber & "'>" & pageNumber & "</a>"
End If
Next
If rs.pagecount > BasePage Then retval = retval & " <a href='" & LinkFile & "page=" & (BasePage + 11) & "'>>></a>"

ExportPageInfo = retval
End Function

应用

<%
adoPageRS.open "SELECT * FROM news ORDER BY addtime DESC", conn, 1, 1
if err.number <> 0 then
response.write "数据库操作失败:"&err.description
else
if adoPageRS.eof and adoPageRS.bof then
response.write "没有记录"
else
%>
<div align="center">
<center>
<table width="100%" border="0" cellspacing="1" cellpadding="2">
<tr class="big">
<td width="60%">新 闻 标 题</td>
<td width="25%" align="center">日期</td>
<td width="15%" align="center">操  作</td>
</tr>
<%
adoPageRS.pagesize = 10
adoPageRS.absolutepage = curpage
for i = 0 to 9
%>
<tr>
<td><%= adoPageRS("title") %></td>
<td align="center">
<% = adoPageRS("addtime") %>
</td>
<td align="center"><a href='newsman.asp?action=edit&id=<%= adoPageRS("id")%>'>编辑</a>
<a href='javascript:confirmDel(<%= adoPageRS("id") %>)'>删除</a></td>
</tr>
<%
adoPageRS.movenext
if adoPageRS.eof then
i = i + 1
exit for
End If
next
%>
<tr align="center">
<td colspan="3">
<% = ExportPageInfo(adoPageRS, curpage, i, "Newsman.asp?") %>
</td>
</tr>
</table>
</center>
</div>
possible_Y 2003-02-26
  • 打赏
  • 举报
回复
<%
curDir = Server.MapPath("***.mdb")
set newcon=server.createobject("adodb.connection")
newcon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & curDir
set toprs=server.createobject("adodb.recordset")
toprs.open sql,newcon,3,3

if not toprs.eof then
toprs.pagesize=10 '设置分页数
pageno=request.querystring("pageno")
if pageno=empty then
pageno=1
end if
if cint(pageno)<=1 then
pageno=1
end if
if cint(pageno)>=toprs.pagecount then
pageno=toprs.pagecount
end if
toprs.absolutepage=cint(pageno)
zs=toprs.pagecount

xxhh=0
do while xxhh<10 and (not toprs.eof) '修改10来设置分页数
xxhh=xxhh+1
%>

//这里面写显示你数据库数据的代码

<%
toprs.MoveNext
Loop
end if

%>

<tr>
<td align=center bgcolor="#EFEFEF">
<%if pageno>1 then%>
<a href=<%="xntz.asp?pageno=1"%>>首页</a>
<a href=<%="xntz.asp?pageno="&pageno-1%>>上页</a>
<%End if
if CInt(pageno)<CInt(total) then
%>
<a href=<%="xntz.asp?pageno="&pageno+1%>>下页</a>
<a href=<%="xntz.asp?pageno="&zs%>>尾页</a>
<%End if%>
<%="当前页/总页数("&pageno&"/"&total&")"%>
</td>
</tr>
wnhoo 2003-02-26
  • 打赏
  • 举报
回复
一. 表 结 构 定 义:
 

---- 表 名:Product

---- 字 段 名: 产 品 编号:Product_Id

---- 产 品 名 称:Product_Name



二. 功 能 描 述:
 

---- 用 户 输 入 产 品 号, 不 必 输 入全 名. 采 用 模 糊 查 询 的 方 法. 找 到 满 足 条 件 的 纪 录.



三. 程 序 脚 本
 

---- 整 个 程 序 有 三 个Asp 文 件( 省略Html 语 言 部 分)

---- 1 用 户 查 询 数据 输 入 表 单:Input.Asp




-----用户输入产品编号
< Form Method="Post" Action="/Cgi/Prod.Asp" >
< Input Type="Text" Name="Id" Size="20" >
< Input Type="Submit"
Value="Submit" Name="B1" >
< /Form >

2.分页处理程序之一:Prod.Asp
----用户提交表单Input.Asp后触发

< %Cid=Trim(Request.Form("Id"))% >

< %Set Rlt = Createobject("Adodb.Recordset")% >
******创建Recordset对象
< %Sql="Select * From Product Where Product_Id Like '
"& Cid &"'+'%'" >

< %Rlt.Open Sql,"Uid=Ncgi;Pwd=Sql;Dsn=Tcgi",1% >
******执行Sql语句

< % If Rlt.Pagecount< 1 Then % >
< H2 >没有纪录< /H2 >
< A Href="Javascript:History.Back()" >
返回< /A >
< %Else% >

------------------- 北极星书库||http://www.ebook007.com
*****以下显示查询信息:显示样式:
*****共有XX页XXX条纪录 页号:1 .2 .3. 4. 5.........

共有< %=Rlt.Pagecount% >页
< %=Rlt.Recordcount% >条纪录

页号:< % For I=1 To Rlt.Pagecount% >
< %cid=rlt("product_id")
< AHref="Prodpage.Asp?Pcnt=< %=I% >&id=< %=cid% > >
< %=I% >.< /A >
< %Next % >
< /A >
< Hr >
< %Rlt.Pagesize=20% >
******以下显示产品列表:显示样式:
******1.XXXX
******2.XXXX
****** ...........

< %Rlt.Absolutepage=1% >
< % For I=1 To Rlt.Pagesize% >
< % If Rlt.Eof Then
Exit For
End If% >
< Li >< %=I% >. < %=Trim(Rlt("Product_Name"))< /Li >
< %Rlt.Movenext
Next% >
< %Rlt.Close% >

3.分页处理程序之二:Propage.Asp

----用户选择 (页号:1 .2 .3. 4. 5.........)中某页号后触发

< %Cid=Trim(Request.querystring("Id"))% >
< %Rlt.Absolutepage=Request.Querystring("Pcnt")% >

******以上部分与Prod.Asp相同 *****

< % For I=1 To Rlt.Pagesize% >
< % If Rlt.Eof Then
Exit For
End If% >
< Li >< %=I% >. < %=Trim(Rlt("Product_Name"))< /Li >
< %Rlt.Movenext
Next% >
< %Rlt.Close% >



四。 补 充 说 明;
 

---- 你 可 以 让 用 户 设 置 每 页 的长 度。 方 法 是 用Session 对 象 维 护 用 户 信 息 接 受 用 户 设 置信 息:



< %session("size")=request.form("size")% >

把Prod.asp中 < %Rlt.Pagesize=20% >一句用下列语句代替
< %if session("size")="" then
rlt.pagesize=20
else
rlt.pagesize=session("size")
end if% >

疑难解析

1.分页功能的关键:
Pagesize Absolutepage属性的应用
Pagesize: 每页纪录大小
Absolutepage:光标定位到那一页.比如说有20条纪录,分成两页,每页十条
Absolutepage=1则从第一条纪录开始。
Absolutepage=2则从第十一条纪录开始。
2.< %Rlt.Open Sql,"Uid=Ncgi;Pwd=Sql;Dsn=Tcgi",1% >
Dsn:系统数据源名,Uid:用户名,Pwd:用户密码,1:光标类型

你必须在控制面板-- >
32位Odbc中建立系统数据源,记住是系统数据源
而不是用户数据源
光标类型:0,是默认值,但如果你想实现分页功能光标类型必须设为1
不然 Recordcount Pagesize Pagecount属性都不能用.

3.request.form("id")和request.querystring("id")

的名字是id
request.querystring("id")指从URL中接受数据

28,408

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧