ASP ajax分页教程一
程序员文章站
2022-05-18 11:17:27
为什么我写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()
%>
再加上很多朋友对分页感到很高深,所以一直都不敢去碰他,要么就用别人写好的组件,要么就是改改别人的东西.特别是.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()
%>