当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP ajax分页教程一

ASP
ASP正则表达式技巧
ASP Access实现网站计数器(访问量)
ASP新闻分页,将一篇过长的文章分页,生成静态页面
一些关于asp 购物车的想法
一个sql查询器,自动画表格填字段
ASP实现文件直接下载的代码
把网页中的(电话,qq等数字)生成图片的ASP程序
asp长文章用分页符来分页显示
Asp函数介紹(37个常用函数)
ASP中的面向对象类
分页实现方法的性能比较
asp ajax跨域提交数据
asp修改文件和文件夹的名字的代码
ASP 多关键词查询实例代码
asp被杀毒软件误删的解决方法
asp 多关键词搜索的简单实现方法
asp 根据IP地址自动判断转向分站的代码
asp dictionary对象的用法
ASP 千万级数据分页的存储过程
ASP隐藏真实文件的下载功能实现代码

ASP ajax分页教程一


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 29 ::
收藏到网摘: n/a

其实AJAX不是那么简单地写写JS就可以做到的,你必须还是要有一定的编程经验,否则就算写出来了,思路很不清晰不说,将来要改动的时候都不知道从什么地方下手.所以在我简单接触了面向对象编程后,感觉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()
%>
'