通用分页源代码,简单到你只需要写一条 sql 语句就可以 - TOMMYHU - 专注互联网开发及运营技术,提供相关资料及软件下载,奇趣网络时事评论!
Mar 9

通用分页源代码,简单到你只需要写一条 sql 语句就可以 不指定

tommyhu , 14:30 , ASP , Comments(0) , Trackbacks(0) , Reads(7806) , Via Original Large | Medium | Small
这个分页代码使用很简单,只有4个步骤:
(1)构造 SQL 查询语句、设置数据库连接字符串、设置每页记录显示数目
(2)插入分页控制代码 <b>navigator_init.inc</b> 文件
(3)在页面的适当地方(即你想显示“上页、下页”的地方),插入分页导航代码 <b>navigator.inc</b>
(4)用循环显示本页记录



<一> 需要分页的 ASP 文件

sample.asp

<%
&#039; 取得当前 ASP 页面的完整路径,重要技巧
theScript = Request.ServerVariables("SCRIPT_NAME")

' (1)构造 SQL 语句

myconnstr = "driver={SQL Server};server=yourserver;uid=sa;pwd=;database=yourdatabase"
thePageSize = 20 ' 每页显示的记录数

uSQL = "select * from yourtablename "

' (2)插入分页控制代码
%>
<!--#include file="../inc/control/navigator_init.inc"-->

<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="../../../../default.css" type="text/css">
</head>

<!-- 你的 HTML 代码//-->

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<!--(3)插入分页导航代码-->
<!--#include file="../inc/control/navigator.inc"-->
</td>
</tr>
</table>

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<!--(4)用循环显示本页记录-->

<% For i = 1 To rs.pagesize %>
<!-- 你的记录显示代码//-->
<%
rs.MoveNext
If rs.EOF Then
Exit For
rs.close
conn.close
End If
next
%>

</td>
</tr>
</table>


</body>
</html>



<二> 分页控制代码:

navigator_init.inc

<%
theCurrentPageNum = clng(request("pn"))

' 用页面名字来唯一确定当前页面使用的 rs
' 由于不同目录下面可以有相同名字的文件,因此使用带完整路径的文件名
theCurrentRS = "rs" & theScript

If theCurrentPageNum = 0 Then

Set conn = Server.CreateObject("ADODB.Connection")
conn.open myconnstr
set rs = server.createobject("adodb.recordset")
rs.open uSQL,conn,1,3

if rs.recordcount > 0 then
rs.PageSize = thePageSize
rs.AbsolutePage = 1
theCurrentPageNum = 1
Set Session(theCurrentRS) = rs
end if

else
Set rs = Session(theCurrentRS)
if rs.recordcount > 0 then
rs.AbsolutePage = theCurrentPageNum
end if
End If

'构造导航条

href_first = theScript & "?mo=0&pn=1"
href_prev = theScript & "?mo=0&pn=" & (theCurrentPageNum-1)
href_next = theScript & "?mo=0&pn=" & (theCurrentPageNum+1)
href_last = theScript & "?mo=0&pn=" & rs.pagecount

strnav_first= "<a href=../../../" & href_first & ">首页</a>"
strnav_prev = "<a href=../../../" & href_prev & ">前页</a>"
strnav_next = "<a href=../../../" & href_next & ">后页</a>"
strnav_last = "<a href=../../../" & href_last & ">末页</a>"

if rs.pagecount > 1 then
'在首页
if theCurrentPageNum = 1 then
strnav_first= "首页"
strnav_prev = "前页"
end if
'在末页
if theCurrentPageNum = rs.pagecount then
strnav_next = "后页"
strnav_last = "末页"
end if
else
strnav_first= "首页"
strnav_prev = "前页"
strnav_next = "后页"
strnav_last = "末页"
end if

strnav = strnav_first & " " & strnav_prev & " " & strnav_next & " " & strnav_last

' 由于在 listrecords 函数中,当显示完所有记录时将关闭 rs ,因此先把 rs.recordcount 保存起来
theRsCount = rs.recordcount
%>




<三> 分页导航代码:

navigator.inc

<table width="300" border="0" align="right" cellpadding="0" cellspacing="0" height="30">
<form action="<%=theScript%>" method="post" name="form_nav" onsubmit="javascript:return checkpn(this);">
<tr>
<td align="right">
<%=rs.recordcount%> 条 <%=rs.pagecount%>页 第<input type="text" name="pn" value="<%
=theCurrentPageNum%>" size=2 maxlength=4 class="form_text_underline">页 <%= strnav %>
</td>
</tr>
</form>
</table>
<script language="javascript">

// 判断用户输入的页码是否合法

function checkpn(form)
{
pn = form.pn ;

if (pn.value=="")
{ alert("请输入页码") ;pn.select();return false;}

if (!uisNum(pn.value))
{ alert("页码是数字") ;pn.select();return false;}

if (pn.value-<%=rs.pagecount%>>0)
{ alert("页码不能大于<%=rs.pagecount%>") ;pn.select();return false;}

return true;
}

function aLength(str)
{
var i,len;
len=0;
for(i=0;i<str.length;i++)
{
if(str.charCodeAt(i) > 255)
len++;
len++;
}
return len;
}

function trimString(str)
{
var i,j;

if(str == "") return "";

for(i=0;i<str.length;i++)
if(str.charAt(i) != ' ') break;
if(i >= str.length) return "";

for(j=str.length-1;j>=0;j--)
if(str.charAt(j) != ' ') break;

return str.substring(i,j+1);
}

function uisNum(str)
{
var i, cChar;

str = trimString(str);

for(i=0;i<str.length;i++)
{
cChar = str.charAt(i);
if( !(("0"<=cChar) && (cChar<="9")) )
return false;
}
return true;
}

</script>

▲返回顶部
Tags:

Add a comment

Nickname

emotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemot