CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

分页过程中遇到的问题,高分求解!!人在随时给分!

楼主z8h8y8(新鸟菜手)2006-05-04 10:16:06 在 Web 开发 / ASP 提问

如下是我调用的部分,可以实现分页!数据库条数,页数等等返回的值也是对的!  
   
  只有一部分不对,也是问题的所在,我举个例子在下面:(假设有8条记录,每页显示5条,这样会分2页出来)  
  --------这是第一页内容---------(注意记录显示的顺序和记录的内容!)  
  1.aaaaaaa  
  2.bbbbbbb  
  3.ccccccc  
  4.ddddddd  
  5.eeeeeee  
  -------------------------------  
  --------这是第二页内容---------(注意记录显示的顺序和记录的内容!)  
  1.aaaaaaa  
  2.bbbbbbb  
  3.ccccccc  
  -------------------------------  
  在第二页中记录个数是对的,但是内容有问题!重复了第一页中的前3条记录!确显示应该是如下这样的:  
  6.fffffff  
  7.ggggggg  
  8.hhhhhhh  
   
  就是这样的问题,由于使用了上面的分页类,小弟对类还不是很熟悉,所以请高手帮忙看一眼,高分相送!人在可以立即给分!  
   
   
  <%  
  dim   rsphoto,photosql  
  set   rsphoto   =   server.createobject("adodb.recordset")  
  photosql   =   "select   pid,title   from   photo   where   cid="   &   id   &   "   order   by   pid   desc"  
  rsphoto.open   photosql,conn,1,1  
  if   rsphoto.eof   then  
  response.write("<font   color=""red"">暂时还没有图片!</font>")  
  else  
  dim   a,totallist,listlimit,pagelists,i  
  set   a   =   new   pagelist  
  totallist   =   rsphoto.recordcount  
  listlimit   =   8  
  pagelists   =   2  
  a.initpara   =   array(totallist,listlimit,pagelists)  
  a.pagelist()  
  for   i   =   a.getstart   to   a.getend  
  response.write("<li><a   href=""photo.asp?cid="   &   id   &   "&pid="   &   rsphoto("pid")   &   "&"   &   okey   &   """>"   &   gottopic(rsphoto("title"),30)   &   "</a></li>")  
  rsphoto.movenext  
  next  
  response.write   a.pageinfo  
  rsphoto.close  
  set   rsphoto   =   nothing  
  end   if  
  %> 问题点数:100、回复次数:9Top

1 楼z8h8y8(新鸟菜手)回复于 2006-05-04 10:16:59 得分 0

附上小弟使用的分页类。  
   
  Class   PageList  
  Private   PerPage  
  Private   PerLimit  
  Private   PerPageLimit  
  Private   TotalNums  
  Private   TotalPage  
  Private   PageUrl  
  Private   PageStart  
  Private   PageEnd  
  Private   PageStyle  
  Private   PageHeader  
  Private   PageBody  
  Private   PageBottom  
  Private   DisplayInfo  
   
  Private   Sub   Class_Initialize()  
  On   Error   Resume   Next  
  Set   PageStyle   =   CreateObject("Scripting.Dictionary")  
  PageStyle.Add   "DS","false"  
  PageStyle.Add   "PN","true"  
  PageStyle.Add   "JP","true"  
  PageStyle.Add   "BY","true"  
  PerPage=cint(Request.QueryString("page"))  
  End   Sub  
   
  Public   Property   Let   InitPara(PLRs)  
  If   isArray(PLRs)   Then    
  TotalNums=PLRs(0)  
  PerLimit=PLRs(1)  
  PerPageLimit=PLRs(2)  
  Else  
  TotalNums=1  
  PerLimit=1  
  PerPageLimit=1  
  End   If  
  End   Property  
  Public   Property   Let   DisplayStyle(styleParameter)  
  If   isArray(styleParameter)   Then  
  PageStyle.Item("DS")=styleParameter(0)   '动态样式  
  PageStyle.Item("PN")=styleParameter(1)   '上下页样式  
  PageStyle.Item("JP")=styleParameter(2)   '表单样式风格  
  PageStyle.Item("BY")=styleParameter(3)   '设置主体部分风格  
  End   If  
  End   Property  
   
  Public   Property   Get   PageInfo()  
  PageInfo=DisplayInfo  
  End   Property  
   
  Public   ProPerty   Get   GetPerPage()  
  GetPerPage=PerPage  
  End   ProPerty    
   
  Public   ProPerty   Get   GetTotalPage()  
  GetTotalPage=TotalPage  
  End   ProPerty  
   
  Public   ProPerty   Get   GetStart()  
  GetStart=(PerPage-1)*PerLimit+1  
  End   ProPerty  
   
  Public   Property   Get   GetEnd()  
  Dim   Ends  
  Ends=GetStart()+PerLimit-1  
  If   Ends>TotalNums   Then   Ends=TotalNums  
  GetEnd=Ends  
  End   Property  
   
  Public   Sub   PageList()  
  Call   SetDefaultStyle()  
  Call   SetPageUrl()  
  Call   SetTotalPage()  
  Call   SetPerPage()  
  Call   SetStaticDynamic()  
  Call   SetDisplayPageInfo()  
  End   Sub  
   
  Private   Sub   SetDefaultStyle()  
  If   PageStyle("DS")="false"   Then  
  If   PageStyle("PN")<>"no"   Then   PageStyle("PN")="true"  
  End   If  
    If   PageStyle("BY")="no"   Then   PageStyle("PN")="false"  
  End   Sub  
   
  Private   Sub   SetPageUrl()  
  On   Error   Resume   Next  
  Dim   queryString  
  Dim   tmp_str  
  Dim   tmp_key,tmp_array  
  queryString   =Request.ServerVariables("QUERY_STRING")  
  queryString   =   Split(Request.ServerVariables("QUERY_STRING"),   "&")  
  For   Each   tmp_key   In   queryString  
  tmp_array   =   Split(tmp_key,"=")  
  If   tmp_array(0)<>"page"   Then  
  tmp_str   =   tmp_str   &   tmp_array(0)   &   "="   &   tmp_array(1)   &   "&"  
  End   If  
  Next  
  PageUrl="http://"   &   Request.ServerVariables("HTTP_HOST")   &   Request.ServerVariables("SCRIPT_NAME")&"?"&tmp_str  
  End   Sub  
   
  Private   Sub   SetTotalPage()  
  TotalPage=Abs(Int(-TotalNums/PerLimit))  
  End   Sub  
   
  Private   Sub   SetPerPage()  
  If   PerPage<=0   Then  
  PerPage=1  
  elseIf   PerPage>TotalPage   Then  
  PerPage=TotalPage  
  End   IF  
  End   Sub  
   
  Public   Function   GetPerNextInfo()  
  Dim   per,nexts  
  If   PerPage>1   Then  
  per=PerPage-1  
  Else  
  per=false  
  End   If  
  If   PerPage<TotalPage   Then  
  nexts=PerPage+1  
  Else    
  nexts=false  
  End   If  
  GetPerNextInfo=array(per,nexts)  
  End   Function  
   
  Public   Function   GetPerNextMoreInfo()  
  Dim   start,ends  
  If   PerPage>PerPageLimit   Then  
  start=PageStart-1  
  Else  
  start=false  
  End   If  
  If   PageEnd<TotalPage   Then  
  ends=PageEnd+1  
  Else  
  ends=false  
  End   If  
  GetPerNextMoreInfo=array(start,ends)  
  End   FunctionTop

2 楼z8h8y8(新鸟菜手)回复于 2006-05-04 10:17:05 得分 0

Private   Sub   SetDynamicPageInfo()  
  PageStart=PerPage  
  If   PageStart<=0   Then   PageStart=1  
  PageEnd=PerPageLimit+PageStart-1  
  If   PageEnd>TotalPage   Then   PageEnd=TotalPage  
  End   Sub  
   
  Private   Sub   SetMidDynamicPageInfo()  
  Dim   add  
  add=fix(PerPageLimit/2)  
  PageStart=PerPage-add  
  If   PageStart<=0   Then   PageStart=1  
  PageEnd=PerPageLimit+PageStart-1  
  If   PageEnd>TotalPage   Then   PageEnd=TotalPage  
  End   Sub  
   
  Private   Sub   SetStaticPageInfo()  
  Dim   starts  
  starts=PerPage/PerPageLimit  
  If   starts-fix(starts)>0   Then  
  starts=fix(starts)  
  Else  
  starts=starts-1  
  End   If  
  PageStart=starts*PerPageLimit+1  
  PageEnd=PageStart+PerPageLimit-1  
  If   PageEnd>TotalPage   Then   PageEnd=TotalPage  
  End   Sub  
   
  Private   Sub   SetStaticDynamic()  
  If   PageStyle("DS")="false"   Then  
  SetStaticPageInfo()  
  ElseIF   PageStyle("DS")="true"   Then  
  If   PageStyle("PN")="true"   Then  
  SetDynamicPageInfo()  
  Else  
  SetMidDynamicPageInfo()    
  End   If  
  Else  
  SetStaticPageInfo()    
  End   If  
  End   Sub  
   
  Public   Function   GetPerNextMore(mark)  
  Dim   tmp_str  
  If   PageStyle("PN")="false"   or   PageStyle("PN")="no"   Then    
  PageBody=PageBody&""  
  GetPerNextMore=""  
  Exit   Function  
  End   If  
  Dim   IfPerNextArray  
  IfPerNextArray=GetPerNextMoreInfo()  
  If   PageStyle("DS")="true"   and   PageStyle("DS")="true"   Then  
  IfPerNextArray(0)=IfPerNextArray(0)+1-PerPageLimit  
  If   IfPerNextArray(0)<=0   Then   IfPerNextArray(0)=1    
  If   PerPage=1   Then   IfPerNextArray(0)=false  
  End   If  
  If   IfPerNextArray(0)   and   mark="true"   Then   tmp_str="<font   face='Webdings'><a   href="&PageUrl&"page="&IfPerNextArray(0)&"   title=前"&PerPageLimit&"页>9</a></font>"&chr(10)  
  If   IfPerNextArray(1)   and   mark<>"true"   Then   tmp_str="<font   face='Webdings'><a   href="&PageUrl&"page="&IfPerNextArray(1)&"   title=后"&PerPageLimit&"页>:</a></font>"&chr(10)  
  PageBody=PageBody&tmp_str  
  GetPerNextMore=tmp_str  
  End   Function  
   
  Public   Function   GetPerNext(mark)  
  Dim   tmp_str  
  If   PageStyle("PN")<>"false"   Then    
  GetPerNext=""  
  Exit   Function  
  End   If  
  IfPerNextArray=GetPerNextInfo()  
  If   IfPerNextArray(0)   and   mark="true"   Then   tmp_str="<font   face='Webdings'><a   href="&PageUrl&"page="&IfPerNextArray(0)&"   title=   前一页>3</a></font>   "  
  If   IfPerNextArray(1)   and   mark<>"true"   Then   tmp_str="<font   face='Webdings'><a   href="&PageUrl&"page="&IfPerNextArray(1)&"   title=后一页>4</a></font>"  
  PageBody=PageBody&tmp_str  
  GetPerNext=tmp_str  
  End   Function  
   
  Public   Function   GetPageHeader()  
  Dim   tmp_str  
  If   PageStyle("DS")="no"   Then  
  GetPageHeader=""  
  Exit   Function  
  End   If  
  tmp_str="第"&PerPage&"页/共"&GetTotalPage()&"页   共"&TotalNums&"条"  
  PageHeader="<div   style='float:left;display:inline;width:25%'>"&tmp_str&"</div>"&Chr(10)  
  GetPageHeader=tmp_str  
  End   Function  
   
  Public   Function   GetPageBody()  
  If   PageStyle("BY")="no"   Then  
  GetPageBody=""  
  Exit   Function  
  End   IF  
  For   PageStart=PageStart   to   PageEnd  
  If   PerPage=PageStart   Then  
  PageBody=PageBody&"<a   href="&PageUrl&"page="&PageStart&"   title=第"&PageStart&"页><span   style='color:#F00'><b>["&PageStart&"]</b></span></a>"&Chr(10)  
  Else  
  PageBody=PageBody&"<a   href="&PageUrl&"page="&PageStart&"   title=第"&PageStart&"页>["&PageStart&"]</a>"&Chr(10)  
  End   If  
  Next  
  GetPageBody=PageBody  
  End   Function  
   
  Private   Sub   SetPageBody()  
  GetPerNextMore("true")  
  GetPerNext("true")  
  GetPageBody()    
  GetPerNextMore("false")  
  GetPerNext("false")  
  PageBody="<div   style='float:left;display:inline;width:45%;text-align:center'>"&PageBody&"</div>"&Chr(10)  
  End   Sub  
   
  Public   Function   GetPageEnd()  
  Dim   tmp_str,i  
  If   PageStyle("JP")="no"   Then  
  GetPageEnd=""  
  PageBottom=""  
  Exit   Function  
  ElseIF   PageStyle("JP")="true"   Then  
  tmp_str="跳到<select   name='pageSelect'   onChange='document.location=this.value'>"  
  For   i=1   to   GetTotalPage()  
  If   i=PerPage   Then  
  tmp_str=tmp_str&"<option   value="&PageUrl&"page="&i&"   selected>"&i&"</option>"  
  Else  
  tmp_str=tmp_str&"<option   value="&PageUrl&"page="&i&">"&i&"</option>"  
  End   If  
  Next  
  tmp_str=tmp_str&"</select>页"  
  ElseIF   PageStyle("JP")="false"   Then  
  tmp_str="<input   type='text'   name='pageSelect'   id='pageSelect'   size='3'   maxlength='5'   value='"&PerPage&"'>"  
  tmp_str=tmp_str&"&nbsp;<input   type='button'   value='GO'   onClick=""document.location='"&PageUrl&"page='+   pageSelect.value"">"  
  End   If  
  PageBottom="<div   style='float:right;display:inline;width:20%'>"&tmp_str&"</div>"&Chr(10)  
  GetPageEnd=tmp_str  
  End   Function  
   
  Private   Sub   SetDisplayPageInfo()  
  GetPageHeader()  
  SetPageBody()  
  GetPageEnd()  
  DisplayInfo="<div   style='margin:5px;'>"&chr(10)&PageHeader&PageBody&PageBottom&"</div>"  
  End   Sub  
  End   ClassTop

3 楼z8h8y8(新鸟菜手)回复于 2006-05-04 12:09:21 得分 0

没人帮忙吗?代码很长,但是我想问题并不是很复杂吧?请大家来看看,帮帮忙忙。高分谢过。Top

4 楼moodboy1982(老鹰)回复于 2006-05-04 12:30:30 得分 0

这么长的代码??  
  关于分页的代码有很多。你的类也太长了点吧。  
  容易出错。Top

5 楼moodboy1982(老鹰)回复于 2006-05-04 12:32:42 得分 20

如果感兴趣的话,可以去:http://www.esoftnow.com/bbs/index.asp?boardid=2  
  看看里面的相关文章。Top

6 楼z8h8y8(新鸟菜手)回复于 2006-05-04 13:10:17 得分 0

说的也是,可是我觉得他这个分页类的速度挺快,而且样式也比较好看才用的。:)Top

7 楼wangcaiwen()回复于 2006-05-04 13:13:55 得分 80

你的问题在于没有给出当前记录所在的页码  
  既recordset的absolutepage属性没有定义  
  导致一直获取的是第一页记录,所以记录值一直相同                      
   
   
  Private   Sub   Class_Initialize()  
  On   Error   Resume   Next  
  Set   PageStyle   =   CreateObject("Scripting.Dictionary")  
  PageStyle.Add   "DS","false"  
  PageStyle.Add   "PN","true"  
  PageStyle.Add   "JP","true"  
  PageStyle.Add   "BY","true"  
  PerPage=cint(Request.QueryString("page"))  
  rsphoto.absolutepage=PerPage  
  End   Sub  
                                   
  你把这一段换上应该可以了,大家相互学习,不过你整那么多类实在是有点问题  
  本来简单的分页程序就被你给搞复杂了Top

8 楼z8h8y8(新鸟菜手)回复于 2006-05-04 13:20:38 得分 0

谢谢楼这位大侠!我也觉得代码很长,试过很多分页类,能推荐几个好的分页类吗?再次感谢。Top

9 楼z8h8y8(新鸟菜手)回复于 2006-05-04 13:41:52 得分 0

感谢了!Top

相关问题

关键词

得分解答快速导航

  • 帖主:z8h8y8
  • moodboy1982
  • wangcaiwen

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo