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

ASP
asp分页(自己整理的2个分页程序)
ASP常用的系统配置函数
雨哲防采集策略之列表篇
雨哲浅谈关于防采集而不影响收录内容篇
asp数据库连接函数
ajax XMLHTTP Post Form时的表单乱码综合解决
ASP注入详细命令40条
用ASP实现MSSQL用户密码破解
ASP创建对象的两种方法比较
ASP字符串转换为整形、双精度型、布尔
ASP计算str2在str1中出现的次数
asp采集抓取网上房产信息的代码
ASP注册登陆实例代码
ASP中使用FileSystemObject时提高性能的方法
分享一个好东东,动态Include文件 (Dynamic File Includes)
解决 JScript 中使用日期类型数据时出现类型错误的问题
在ASP里面创建GUID
在JScript中使用缓存技术的实际代码
ASP javascript Application对象的Contents和StaticObjects做Cache的一些经验
海阳2006+功能中的潜水王

ASP ajax分页教程一


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 28 ::
收藏到网摘: 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()
%>
'