为什么我的分页总是不对!(rs.absolutepage总是为-1)

letdown 2005-05-11 05:04:10
数据库为oracle 8.1.6 +win2000 iis5.
点击页码后,rs.absolutepage好像总是无法获得topage的值,总是自己变成-1!请各位帮帮忙看看,谢谢!!
代码如下:
<body>
<%
topage=trim(request("topage"))

set rs=server.CreateObject("adodb.recordset")
sql="select * from gydm_djzclx"
rs.open sql,conn,1,1

rs.pagesize=5
response.write("共有"&rs.pagecount&"页<br>")

if topage="" then
topage=1
else
topage=cint(topage)
end if
if topage<1 then topage=1
if topage>rs.pagecount then topage=rs.pagecount
rs.absolutepage=topage
current_page=rs.absolutepage
response.write(current_page)
%>
<table width="760" border="1" align="center">
<tr>
<td><div align="center"><strong>登记注册类型编码</strong></div></td>
<td><div align="center"><strong>登记注册类型名称</strong></div></td>
<td><div align="center"><strong>分类代码</strong></div></td>
</tr>
<%


for i=1 to rs.pagesize
if not rs.eof then

djzclxdm=trim(rs("djzclxdm"))
djzclxmc=trim(rs("djzclxmc"))
fldm=trim(rs("nwzfldm"))
%>
<tr>
<td><div align="center"><%=djzclxdm%></div></td>
<td><div align="center"><%=djzclxmc%></div></td>
<td><div align="center"><%=fldm%></div></td>
</tr>
<%
rs.movenext
end if
next
%>
</table>
<table width="760" align="center">
<tr>
<td><table width="600" align="center" cellpadding="0" cellspacing="0">
<tr height="30">
<%
if current_page>1 then
%>
<td ><div align="center"><a href="fenye.asp?topage=1">首页</a></div></td>
<td><div align="center"><a href="fenye.asp?topage=<%=current_page-1%>">上一页</a></div></td>
<%
end if
%>
<%
if current_page<rs.pagecount then
%>
<td><div align="center"><a href="fenye.asp?topage=<%=current_page+1%>">下一页</a></div></td>
<td><div align="center"><a href="fenye.asp?topage=<%=rs.pagecount%>">尾页</a></div></td>
<%
end if
%>
<form name="form1" method="post" action="fenye.asp">
<td valign="top">到第
<input name="topage" type="text" size="3" maxlength="3" value="<%=current_page%>">
页 </td>
</form>
</tr>
</table></td>
</tr>
</table>
</body>
</html>
<%
rs.close
set rs=nothing
conn.close
set conn=nothing
%>
...全文
209 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
cswinter 2005-05-12
  • 打赏
  • 举报
回复
我觉得问题不在rs.open sql,conn,1,1这
而在


rs.absolutepage=topage
current_page=rs.absolutepage
response.write(current_page)
----------------------------------------------
rs.absolutepage=topage
response.write(toppage)

分页的地方也用
fenye.asp?topage=<%=toppage%>-1....

看看行不行。

yjyq 2005-05-12
  • 打赏
  • 举报
回复
关注。
letdown 2005-05-12
  • 打赏
  • 举报
回复
问题解决!
只要把游标改成客户端游标rs.cursorlocation=3就行了,和后面rs.open sql,conn,1,1没有关系(“1,1”就是代表队数据进行读取,我没想修改或增加数据。所以不用改成"1,3")

netwar(ahlong8@hotmail.com) :谢谢你给我提供的分页函数!我觉得今后我的代码还要尽量模块化,尽量用函数,尽量封装类!便于维护和扩展!今后自己也会尽量改变自己的编码风格。

最后再问一句,为什么要把游标改成客户端游标rs.cursorlocation=3就行了呢?原理是什么?然后马上结贴!
tjhdaxia 2005-05-12
  • 打赏
  • 举报
回复
rs.open sql,conn,1,1 百分之一百是这一段出问题.
后面1改为3应该就可以了.
netwar 2005-05-12
  • 打赏
  • 举报
回复
'--------------------------------------------------------------
'函数名称:setState(obj,page)
'函数功能:设置翻页功能
'函数参数:obj:数据记录集对象,page当前页码
' LinkHref:链接的相关路径
' LinkString:链接的相关参数
'-------------------------------------------------------------
function setState(obj,page,LinkHref,LinkString)
if clng(page)<=1 then
flag1 = "N"
firstPage = "disabled"
prevPage = "disabled"
Flink = PLink = "return false;"
end if

if clng(page)>=clng(obj.pagecount) then
flag2= "N"
nextpage = "disabled"
lastpage = "disabled"
Nlink = Llink = " return false;"
end if

if Linkhref="" then Linkhref="index.asp"
if MyAlign="" then MyAlign="right"
if isText then
TRstyle = "style=color:white"
else
TRstyle = "style=color:black"
end if
Response.write "<table border=0 width=""100%""valign=center>"
Response.write " <form action=""" & LinkHref & """ method=""post"" name=""frm00"">"
Response.write " <tr height=22 " & TRstyle & ">"
Response.write " <input type=hidden name='ClassID' value='" & ClassID & "'>"
Response.write " <input type=hidden name='ClassName' value='" & ClassName & "'>"
Response.write " <input type=hidden name='ParentID' value='" & ParentID & "'>"
Response.write " <input type=hidden name='strKeyWords' value='" & strKeyWords & "'>"
Response.write " <td align=" & MyAlign & "><font class=tip>页码:<font class=tip>" & page & "/" & obj.pagecount & "</font> "
Response.write " 记录数:" & obj.recordcount & " <input type=""hidden"" name=""page"" value='" & page & "'>"
if not isText then
Response.write " <input " & firstPage & " class=""BTN_1"" type=""button"" value=""首页"" onclick=""javascript:setPage(1);"">"
Response.write " <input " & PrevPage & " class=""BTN_1"" type=""button"" value=""上页"" onclick=""javascript:setPage('" & page-1 & "');"">"
Response.write " <input " & nextPage & " class=""BTN_1"" type=""button"" value=""下页"" onclick=""javascript:setPage('" & page+1 & "');"">"
Response.write " <input " & LastPage & " class=""BTN_1"" type=""button"" value=""末页"" onclick=""javascript:setPage('" & obj.pagecount & "');"">"
else

if flag1="N" then
Response.write " 首页"
Response.write " 上页"
else
Response.write " <A " & TRstyle & " class=Mytip href=""#"" onclick=""javascript:" & Flink & ";setPage(1);"">首页</a>"
Response.write " <A " & TRstyle & " class=Mytip href=""#"" onclick=""javascript:" & Plink & ";setPage('" & page-1 & "');"">上页</a>"
end if

if flag2="N" then
Response.write " 下页"
Response.write " 末页"
else
Response.write " <A " & TRstyle & " href=""#"" onclick=""javascript:" & Nlink & ";setPage('" & page+1 & "');"">下页</a>"
Response.write " <A " & TRstyle & " href=""#"" onclick=""javascript:" & Llink & ";setPage('" & obj.pagecount & "');"">末页</a>"
end if
end if
Response.write "  跳到:<select name='go' size=1 onchange='setPage(this.value);'>"
for k=1 to obj.pagecount
if k = clng(page) then
sel = "selected"
else
sel = ""
end if
response.write "<option " & sel & " value='" & k & "'>第" & k & "页</option>"
next
Response.write " </select></font>"
Response.write " </td>"
Response.write " </tr>"
Response.write " </form>"
Response.write " </table>"
end function
letdown 2005-05-12
  • 打赏
  • 举报
回复
那楼上的朋友的意思是什么?那我的问题在哪儿呢?
mrshelly 2005-05-12
  • 打赏
  • 举报
回复
分页永远不要同数据库扯上任何关系。否则,你会死的很难看~~~~~~~
letdown 2005-05-12
  • 打赏
  • 举报
回复
楼上朋友们的方法还没有试,不过我同样的代码用在sql server就没有问题!难道是和数据库有关系?
guanjm 2005-05-12
  • 打赏
  • 举报
回复
游标改成客户端游标

rs.cursorlocation=3
就是这个,加了这个,就没问题了
jzywh 2005-05-11
  • 打赏
  • 举报
回复
rs.open sql,conn,1,3
大圆镜智1222 2005-05-11
  • 打赏
  • 举报
回复
rs.open sql,conn,3,2
aspme 2005-05-11
  • 打赏
  • 举报
回复
我认为问题可能出在下面两句上
if topage<1 then topage=1
if topage>rs.pagecount then topage=rs.pagecount
你试试换一下位置
if topage>rs.pagecount then topage=rs.pagecount
if topage<1 then topage=1
ryuginka 2005-05-11
  • 打赏
  • 举报
回复
游标改成客户端游标

rs.cursorlocation=3
bingofei 2005-05-11
  • 打赏
  • 举报
回复
rs.cursorlocation=3
rs.open sql,conn,3,2
ryuginka 2005-05-11
  • 打赏
  • 举报
回复
rs.open sql,conn,1,3
asp的七种分页方法! 简单 实用 是有点乱 ASP中七种实现分页显示的方法 MS Visual InterDev6.0中七种实现分页显示的方法 我们在编制与数据库有关的Web网页时,由于要显示的数据量巨大,常常面临一个数据记录分页显示的问题。 -------------------------------------------------------------------------------- 在微软的ASP编程体系中,ADO对象的建立,使得从网页访问数据库成为一件易事,特别是ADO的Recordset对象使得控制数据的输出显示更为方便、自由。而在Visual InterDev6.0(以下简称VI6.0)中,由于Script Object Model(以下简称SOM)、Design-Time Control(以下简称DTC)以及Data Environment Object Model(以下简称DEOM)等对象模型的引入,使网页对数据库的访问设计显得更为方便。 因为主题方面的原因,关于数据库的连接,下文只给出代码和简要注释,而把重点放在如何利用Recordset对象(或控件)实现数据记录的分页显示方面。根据我的理解,分页显示的关键就在于对ADO的Recordset对象或DTC(设计时控件)的Recordset控件的属*和方法的熟练把握上。 这七种分页显示的方法概括起来说分四类: 第一、二种我暂取名叫“纯ASP法”,这也是国内的ASP网站上用得最多的方法,它们的区别仅在实现技巧的不同。这两种方法的实现最易理解,用到的对象概念也最少,对开发环境的要求也最低(只要记事本就行)。可以说,这两种方法的实质还是CGI的编程思想,只是在程序中引入了ADO对象而已。 第四、五种暂取名叫“SOM的DHTML法”。这两种方法要求在VI6.0的环境下,利用微软提出的脚本对象模型(Script Object Model)和DHTML中Table对象的与数据库绑定的新特*(许多书和文章只介绍了DHTML的CSS特*在样式设计中的运用而忽略介绍其数据绑定特*),实现在客户端控制翻页。但它要求用户的浏览器必须是支持DHTML,如:Microsoft Internet Explorer 4.0及以上的版本。 第六种暂取名叫“SOM服务器端法”。要求在VI6.0的环境下开发,它利用微软提出的脚本对象模型(Script Object Model)中的几个DTC控件:Recordset、PageObject、Grid等在服务器端(客户端)实现翻页控制。这是一种激动人心的、全新的编程方法,它把网页看成对象(这种对象模型和传统的DOM----document object model是有区别的:DOM只能控制客户端,而SOM可控制服务器端和客户端),它真正实现了网页的面向对象编程。但遗憾的是,也许是我个人能力有限,这种技术我个人认为还不是很成熟,比如,与浏览器的结合还不是很好,这将在后文详细说明。 第七种暂取名叫“DEOM法”。它也是利用了VI6.0中建立的数据环境对象模型(Data Environment Object Model)建立Recordset对象。这也是在网页编程上比较少见的新方法,与SOM模型相比,自有它的优点,这将在后文详述。 在后面所举的所有例子源代码,都可以直接拷贝使用,你甚至可以不懂其原理,只要把其中的粗斜体字部分换成相应自己的数据库名或字段名就可以了。 在开始详细介绍各种分页方法前,让我们先创建一个数据库:用Office97中的access自创一个Employee.mdb,其中建一个表emp,只设三个字段:emp ID,last name和first name。为什么这么简单,是因为我们关心的是怎样处理recordset的结果。 第一种:参数直接代入法。 这种方法是用手工建立Recordset对象,利用其pagesize(每页指定显示记录数),pagecount(总页码数)和absolutepage(当前页码数)属*来控制分页的输出。分页采用直接带页码参数的方法来控制翻页。网页的名字为emp1.asp。源代码如下: <%//建立与employee.mdb数据库的连接。 Set conn = Server.CreateObject("ADODB.Connection") conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=employee.mdb" //建立emp表的Recordset对象实例rs。 Set rs = Server.CreateObject("ADODB.Recordset") rs.Open "emp", conn, 3

28,406

社区成员

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

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