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

ASP
asp生成三维饼图的函数
ASP下的简洁的多重查询的方法与函数 真不错
发一个ASP的ADODB类代码
A利用ASP小偷和Google实现在线翻译功能的代码
ASP类型网站结合动网论坛会员的方法
Asp下实现多表单域无组件文件上传的实例
asp制作中常用到的函数库集合
易心asp分页类 v1.0
asp中xmlhttp组件发包
检测是否为数字类型的asp代码
可以获得文件的文件名的asp函数
用asp实现访问远程计算机上MDB access数据库文件的方法
用ASP实现写IIS日志的代码
asp在IE浏览器中下载服务端上的各类文件的实现方法
asp汉字中文图片验证码的实现代码
asp WAP获取手机终端信息的一段代码
asp取得数组中的最大值的方法
用asp实现的截取指定格式字符串的代码
asp jmail发邮件 详细解析
ASP编程中连接数据库和数据库操作的常用代码

ASP ajax分页教程一


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