ASP ajax分页教程一

  为什么我写ASP分页教程要提到AJAX呢,因为我们要多练习一下编程过程中,结构化的重要性.

  再加上很多朋友对分页感到很高深,所以一直都不敢去碰他,要么就用别人写好的组件,要么就是改改别人的东西.特别是.net,我深有感触,假如要快速开发一个项目,我想.net是一个非常优秀的平台.但是,因为他的严重控件化,反而是新手接触不到编程的思想,完全找不到编程的感觉,仿佛就象在搭积木.有时候还是要练习一下底层一点的东西,这样个人的技术能力才会得到提高.我可不想做只会用.NET的组装工人.

  好了,下面给出ASP分页的源代码给大家,都进行了详细的注释,一般都可以看的懂.

  因为这个是教程一,所以就从最简单的开始,我直接使用的AbsolutePage来定义当前页面,所以没有用诸如MoveFirst这种比较复杂的游标方式,而且分页也是用的下拉选择框,等下个教程我再写一下进阶分页方法,给出前进十页,后退十页,只显示目前所在的十页分组的方法.

  ASP虽然是一个过时的东西,不过因为他可以使用JS来写,所以我感觉要做一个项目DEMO的时候,使用ASP要比.NET或者JAVA更方便,因为他不用安装体积庞大的环境.简简单单配置一下就可以了.真要大规模项目开发的话,我肯定还是会用.NET或JAVA的,因为这样就会涉及到效率问题了.

  

复制代码 代码如下:

  <%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>

  <%

  //定义数据库连接语句

  var connstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="

  +Server.MapPath("database/vote.mdb");

  //建立一个rs数据库查询

  var rs = Server.CreateObject("ADODB.Recordset")

  //rs连接方式

  rs.ActiveConnection = connstring

  //rs查询语句(按照用户提交时间倒序查询)

  rs.Source = "select * from users order by usetime DESC"

  //定义数据库查询模式

  rs.CursorType = 3

  rs.CursorLocation = 3

  rs.LockType = 1

  //定义每页显示数据数量

  rs.PageSize = 10

  //打开数据库连接

  rs.Open()

  //定义数据库纪录总数,分页总数,URL路径

  var counts,pagecos,thisUrl

  counts = rs.RecordCount

  pagecos = rs.PageCount

  thisUrl = Request.ServerVariables("URL")

  //如果游标在表中就执行

  if(!rs.EOF || !rs.BOF){

  //如果url的page参数不为空就执行

  if(Request("page").Count != 0){

  //定义默认链接字符串,第一页,尾页,上页,下页

  //URL的page值(指定的当前页),当前页,当前每页显示数据数量

  var defaltStr,firstpage,lastpage,prepage,nextpage,pages,nowPage,nowSize

  defaltStr = '<a href="'+thisUrl+'?page='

  firstpage = defaltStr+'1">首页</a>'

  lastpage = defaltStr+pagecos+'">尾页</a>'

  pages = Request("page")

  //如果处于第一页

  //首页,上一页不为链接

  if(pages <= 1){

  rs.AbsolutePage = 1;

  firstpage = '首页'

  prepage = '上一页'

  nextpage = defaltStr+'2">下一页</a>'

  //如果处于最后一页

  //尾页,下一页不为链接

  }else if(pages >= pagecos){

  rs.AbsolutePage = pagecos;

  prepage = defaltStr+(pagecos-1)+'">上一页</a>'

  lastpage = '尾页'

  nextpage = '下一页'

  }else{

  rs.AbsolutePage = pages

  prepage = defaltStr+(Number(pages)-1)+'">上一页</a>'

  nextpage = defaltStr+(Number(pages)+1)+'">下一页</a>'

  }

  }

  nowPage = rs.AbsolutePage

  nowSize = rs.PageSize

  //如果处于最后一页,并且数据显示数量与每页显示数据数量不相等时

  //因为最后一页不可能每次都刚好与每页显示数据数量相等

  //所以需要定义一个不相等的方法

  if(nowPage >= pagecos && (pagecos*rs.PageSize)%counts != 0){

  nowSize = counts%rs.PageSize

  }

  %>

  <table width="100%" border="0" cellspacing="0" cellpadding="0" class="userinfo">

  <tr>

  <td align="center">

  <!--显示首页,上一页 -->

  <%=firstpage%> <%=prepage%> 

  跳转到第 <select onchange="location.href='<%=thisUrl%>?page='+this.value">

  <%

  //分页依靠循环显示

  for(var num=1; num<=pagecos; num++){

  if(nowPage == num){

  %>

  <option value="<%=num%>" selected="selected"><%=num%></option>

  <%

  }else{

  %>

  <option value="<%=num%>"><%=num%></option>

  <%

  }

  }

  %>

  </select> 页

  <!--显示下一页,尾页 -->

   <%=nextpage%> <%=lastpage%>

  <!--显示当前页数,总页数,总记录数,每页显示数据数量 -->

   共 <%=nowPage%> / <%=pagecos%> 页 <%=counts%> / <%=rs.PageSize%> 条记录

  </td>

  </tr>

  <%

  //内容依靠循环显示

  for(var i=1;i<=nowSize;i++){

  %>

  <tr>

  <td><span>用户IP:</span><%=rs("usip")%></td>

  </tr>

  <tr>

  <td><span>建议:</span><%=rs("us1")%></td>

  </tr>

  <tr>

  <td><span>提交时间:</span><%=rs("usetime")%></td>

  </tr>

  <%

  //数据库游标向移向下一条记录

  rs.MoveNext();

  }

  %>

  </table>

  <%

  //如果数据库游标不在数据库列中

  }else{

  Response.Write("没有用户信息!")

  }

  //关闭数据库连接

  rs.Close()

  %>