分页问题?为什么非得要这样做?

suhongwei 2004-04-12 04:48:13
问题一:首次进入这个页面时,页面顶部的页次1应该不是一个链接(代码中已经作了判断),但没有实现,而切换到其他页后再回到第一页又不存在这个问题了.
问题二:第一次点下一页按钮时没反应,要点两次才转到第二页.
问题三:持续点下一页到达最后一页时还有下一页的链接,这时点它会出错.但我在代码中明明已作了判断到达最后一页时就不再显示下一页的链接.

代码如下:
<!--#include file="adofunctions.asp"-->
<head>
<link type="text/css" rel="stylesheet" href="style.css">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<%
'定义一个名为showpage的子函数,用来分页显示当前页的留言.由pageno参数决定要显示哪一页
sub showpage(objrs,pageno)

'显示留言并加以格式化,每条留言是一个单独的表格
objrs.absolutepage=pageno
for i=1 to objrs.pagesize '在主程序中已设置分页大小为五条记录
response.write "<table align='center' width='100%'>"
response.write "<tr><td bgcolor='#E7E9E7'>"
response.write "留言主题:"&objrs("title")&"</td></tr>"
response.write "<tr><td >"'这二行用来显示留言的主题和留言时间
response.write "留言时间:"&objrs("datetime")&"</td></tr>"
response.write "<tr><td >留言内容:</td></tr>" '这二行用来显示留言的内容
response.write "<tr><td >"&objrs("content")&"</td></tr>"
if objrs("sex")="男" then
sex="先生"
else sex="女士"
end if
response.write "<tr><td bgcolor='#99CC99'>"&"留言人:"&objrs("username")&"  "&sex&"  "
response.write "来自:" & objrs("address") & "  "& objrs("corporation")&"  "
response.write "<img src='img/homepage.gif' alt='"&objrs("homepage")&"'>"&"</img>"&"  "
response.write "<img src='img/oicq.gif' alt='"&objrs("qq")&"'>"&"</img>"&"  "
response.write "<img src='img/email.gif' alt='"&objrs("mail")&"'>"&"</img>"
response.write "</td></tr>"
'这一行用于显示留言人信息包含姓名性别联系地址电话E-MAIL\QQ\公司名称\公司主页
response.write "</table>"
objrs.movenext
if objrs.eof then exit for
next
end sub
%>

<%
strsql="select * from 留言表 order by datetime desc"
set objrs=getsqlrecordset(strsql,"sizheng.mdb","留言表")
objrs.pagesize=5
pageno=request("pageno") '读恨浏览者点击的页次超级链接,确定当前要显示哪一页
response.write "<p><a href='leaveword.htm'>我要留言</a>    "
response.write "[ | "
for i=1 to objrs.pagecount '这里好象有问题
if i= CInt(pageno) then
response.write i &" | "
else
response.write "<a href='showadvertence.asp? pageno="&i&"'>"&i&"</a>"&" | " '******这里好象有问题*******

'以上这句用于产生一个数字的超级链接,当用户点取后将所点击的数字作为参数传递给本身这一个ASP页面
end if
next
response.write "]"

'以下这一段显示上一页下一页链接

if objrs.absolutepage >=1 then '******这里好象有问题*******
if objrs.absolutepage=1 then
response.write "<a href='showadvertence.asp?pageno="& pageno &"'>首页"&"</a>"&"  "
else
response.write "<a href='showadvertence.asp?pageno="& (pageno-1) &"'>上一页"&"</a>"&"  "
end if
end if
if objrs.absolutepage<=objrs.pagecount then
if objrs.absolutepage=objrs.pagecount then
response.write "<a href='showadvertence.asp?pageno="& objrs.pagecount &"'>末页"&"</a>"&"  "
else
response.write "<a href='showadvertence.asp?pageno="& (pageno+1) &"'>下一页"&"</a>"&"  "
end if
end if '*************这里好象有问题一直到这里.**************
response.write "</p>"
%>

<%
'根据页次的不同调用SHOWPAGE子函数,如果没有指定页次则默认显示第一页
if pageno<>"" then
showpage objrs,pageno
else
showpage objrs,1
end if


strsql="select * from 留言表 order by datetime desc"
set objrs=getsqlrecordset(strsql,"sizheng.mdb","留言表")
objrs.pagesize=5
pageno=request("pageno") '读恨浏览者点击的页次超级链接,确定当前要显示哪一页 response.write "<p>[ | "
for i=1 to objrs.pagecount
if i= CInt(pageno) then
response.write i &" | "
else
response.write "<a href='showadvertence.asp?pageno="&i&"'>"&i&"</a>"&" | "
'以上这句用于产生一个数字的超级链接,当用户点取后将所点击的数字作为参数传递给本身这一个ASP页面
end if
next
response.write "]"

'关闭数据库连接并释放对象实例
objrs.close
set objrs=nothing
objconn.close
set objconn=nothing
%>



...全文
21 点赞 收藏 3
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
WizardBear 2004-04-12
对数据不敏感是指声明的部分,

实际使用起来,vbs会自动进行相应转换,

但也有转换不了的表达式,因为可能会存在歧义,

所以,必要的时候必须得强制类型转换,

勤于转换不但可以养成良好的变成习惯,而且可以大幅提高程序的可读性,还能舒筋活血、健脾清肺。。。
回复
liuyu202 2004-04-12
VBS不是对数据类型不敏感的吗,为什么还要做数据类型转换了?

VBS是对数据类型不敏感,如果不做数据类型转换,会出现一些隐蔽的错误!
做数据类型转换,可以减少错误发生!
回复
suhongwei 2004-04-12
经人指点,改成这样就正常了.
与我最大的区别就是做了字符串和数年字之间的转换,不明白实质区别在哪里,VBS不是对数据类型不敏感的吗,为什么还要做数据类型转换了


<!--#include file="adofunctions.asp"-->
<head>
<link type="text/css" rel="stylesheet" href="style.css">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<%
'定义一个名为showpage的子函数,用来分页显示当前页的留言.由pageno参数决定要显示哪一页
sub showpage(objrs, pageno)

'显示留言并加以格式化,每条留言是一个单独的表格

objrs.absolutepage=pageno
for i=1 to objrs.pagesize '在主程序中已设置分页大小为五条记录
response.write "<table align='center' width='100%'>"
response.write "<tr><td bgcolor='#E7E9E7'>"
response.write "留言主题:"&objrs("title")&"</td></tr>"
response.write "<tr><td >"'这二行用来显示留言的主题和留言时间
response.write "留言时间:"&objrs("datetime")&"</td></tr>"
response.write "<tr><td >留言内容:</td></tr>" '这二行用来显示留言的内容
response.write "<tr><td >"&objrs("content")&"</td></tr>"
if objrs("sex")="男" then
sex="先生"
else sex="女士"
end if
response.write "<tr><td bgcolor='#99CC99'>"&"留言人:"&objrs("username")&"  "&sex&"  "
response.write "来自:" & objrs("address") & "  "& objrs("corporation")&"  "
response.write "<img src='img/homepage.gif' alt='"&objrs("homepage")&"'>"&"</img>"&"  "
response.write "<img src='img/oicq.gif' alt='"&objrs("qq")&"'>"&"</img>"&"  "
response.write "<img src='img/email.gif' alt='"&objrs("mail")&"'>"&"</img>"
response.write "</td></tr>"
'这一行用于显示留言人信息包含姓名性别联系地址电话E-MAIL\QQ\公司名称\公司主页
response.write "</table>"
objrs.movenext
if objrs.eof then exit for
next
end sub
%>

<%
strsql="select * from 留言表 order by datetime desc"
set objrs=getsqlrecordset(strsql,"sizheng.mdb","留言表")
objrs.pagesize=5
'pageno=request("pageno") '读取浏览者点击的页次超级链接,确定当前要显示哪一页

'给我指点的人加了下面一段代码
if not isEmpty(request("pageno")) then
pageno=Cint(request("pageno"))
else
pageno=1
end if
'到这里为止,但我认为我自己的代码中,调用SHOWPAGE函数之前已经作了判断了如下

if pageno<>"" then
showpage objrs,pageno
else
showpage objrs,1
end if
有了这段应该就没问题为什么非得象他那样呢
接着他的

response.write "<p><a href='leaveword.htm'>我要留言</a>    "
response.write "[ | "
for i=1 to objrs.pagecount
if i= CInt(pageno) then
response.write i &" | "
else
response.write "<a href='showadvertence.asp?pageno="&i&"'>"&i&"</a>"&" | "
'以上这句用于产生一个数字的超级链接,当用户点取后将所点击的数字作为参数传递给本身这一个ASP页面
end if
next
response.write "]"

'以下这段也和我的处理方法不同,帮忙解释一下
if pageno=1 then
Response.Write " 首页 上一页  "
else
response.write "<a href='showadvertence.asp?pageno=1'>首页"&"</a>"&"  "
response.write "<a href='showadvertence.asp?pageno="+Cstr(pageno-1)+"'>上一页"&"</a>"&"  "
end if
'if pageno>=objrs.pagecount then
if objrs.PageCount-pageno<1 then
Response.Write "下一页 末页"
else
response.write "<a href=showadvertence.asp?pageno="+Cstr(pageno+1)+">下一页"&"</a>"&"  "
response.write "<a href=showadvertence.asp?pageno="+Cstr(objrs.pagecount)+">末页"&"</a>"&"  "

end if


response.write "</p>"
%>

<%
'根据页次的不同调用SHOWPAGE子函数,如果没有指定页次则默认显示第一页
if pageno<>"" then
showpage objrs,pageno
else
showpage objrs,1
end if
'原来我写的上面这段他依然保留了,为什么要他前面那段


strsql="select * from 留言表 order by datetime desc"
set objrs=getsqlrecordset(strsql,"sizheng.mdb","留言表")
objrs.pagesize=5
'看他又加了这一段
if not isEmpty(request("pageno")) then
pageno=Cint(request("pageno"))
else
pageno=1
end if
'到这里为止
if pageno>objrs.PageCount or pageno<=0 then
pageno=1
end if
objrs.AbsolutePage=pageno

' pageno=request("pageno") '读恨浏览者点击的页次超级链接,确定当前要显示哪一页 response.write "<p>[ | "
for i=1 to objrs.pagecount
if i= CInt(pageno) then
response.write i &" | "
else
response.write "<a href='showadvertence.asp?pageno="&i&"'>"&i&"</a>"&" | "
'以上这句用于产生一个数字的超级链接,当用户点取后将所点击的数字作为参数传递给本身这一个ASP页面
end if
next
response.write "]"

'关闭数据库连接并释放对象实例
objrs.close
set objrs=nothing
objconn.close
set objconn=nothing
%>


不明白区别在哪里,VBS不是对数据类型不敏感的吗,为什么还要做数据类型转换了
回复
发动态
发帖子
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
社区公告
暂无公告