ASP ajax分页教程一
来源:asp之家 发布时间:2011-04-10 10:51:00
为什么我写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()
%>
猜你喜欢
- 备份MySQL数据库的命令mysqldump -hhostname -uusername -ppassword
- 这样做的好处是:利用表格来装载数据,不言而喻是最好的,你可以很灵活的为每个单元格定义样式。下面是具体的做法首先在photoshop设计一个效
- asp函数实现把数字格式化为每3个数字时以逗号间隔的数字见下:<%Function Comma(str)If No
- 在JavaScript开发中,被人问到:null与undefined到底有啥区别?一时间不好回答,特别是undefined,因为这涉及到un
- jQuery是最近比较火的一个JavaScript库,从del.icio.us/上相关的收藏可见一斑。到目前为之jQuery已经发布到1.2
- 一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正理解Javascript函数是如何工作而导致的(顺便说一下,许多那
- 注意:如果您尚未阅读过原来那篇老文章《悟透JavaScript》,请先行阅读该文,以了解上下文关系。在上面的示例中,我们定义了两个语法甘露,
- 如何在ADO中使用SQL函数?代码见下:<%Set conn1 = Server.CreateObjec
- 或许你知道,Internet Explorer 6 已经不是最先进的浏览器了。事实上,它已经八岁了,但是很多人还在使用这个不安全的浏览器。正
- 下面十条内容的标题原本是《10 Lessons for Young Designers》,是John C. Jay给年青设计师们的十条经验教
- 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2
- 首先忠心感谢凌宇5942给我的帮助!在他的启迪下我发现了另一种实现flash透明背景的办法,愿与大家共同探讨:凌宇5942告知的解决办法:在
- 昨天在网上看到一个防采集软件,说采集只访问当前网页,不会访问网页的图片、JS等,今天突然想到,通过动态程序和Js访问分别记录访问者的IP,然
- 一、利用ASP和ADO实现数据库操作的工作流程ASP内嵌了五个对象Resquest、Response、Server、Seesion、Appl
- FileSystemObject、Folder 和 File 对象的一些方法都与通过 TextStream 对象创建、读取或写入文件有关。虽
- 当管理SQL Server内在的帐户和密码时,我们很容易认为这一切都相当的安全。但实际上并非如此。在这里,我们列出了一些对于SQL Serv
- 有时候想为我们的网页提供多语言支持,如果一种语言用一张网页来做实在太麻烦了,幸好Google提供了语言工具功能,下面介绍如何利用它来实现网页
- 从2003年到现在,从ACCESS到SQL SERVER的使用。在ACCESS中没有存储过程的概念。在使用过程中,发现ACCESS与SQL
- 数据的安全性策略: 数据的生考虑应基于数据的重要性。如果数据不是很重要,那么数据的安全性策略可以稍稍放松一些。然而,如果数据很重要,那么应该
- 这篇论坛文章着重介绍了Access数据库出现0x80004005问题的解决方法,更多内容请参考下文:项目做了三个月了,终于也差不多完成了,昨