xml 分页
http://topic.csdn.net/t/20050106/16/3704422.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>xml</title>
<xml id="xmlid" src="xml.asp" async="false"></xml>
<style type="text/css">
<!--
body,td,th {
font-size: 12px;
}
-->
</style></head>
<body onLoad="list1 (1)" >
<script language="vbscript">
function list(page)
set rs=xmlid.recordset
rs.pagesize=15
dd=rs.pagecount
if page<=dd then
rs.absolutepage=page
str=" "
str=str& "<table width='94%' border='0' align='center' cellpadding='0' cellspacing='1' bgcolor='#336699'><tr align='center' bgcolor='#C0CCcc'>"
for i=0 to rs.fields.count-2
str=str& "<td>"
str=str& rs(i).name
str=str& "</td>"
next
str=str& "<tr>"
j=0
while not rs.eof
if j<=14 then
str=str& "<tr align='center' bgcolor='#FFFFFF'>"
for i=0 to rs.fields.count-2
str=str& "<td>"
str=str& rs(i)
str=str& "</td>"
next
str=str& "</tr>"
end if
j=j+1
rs.movenext
wend
str=str& ("</table>")
pagepage.innerHTML=str
document.page.pageno.value=page
else
msgbox "数据不够,总共才" & dd &"页"
end if
end function
function list1(page)
if xmlid.readystate=4 then
list page
else
settimeout "list1" &page,1
end if
end function
//---------------------------
sub to_onclick
list1 int(document.page.pageno.value)
end sub
//----------------------
sub last_onclick
set L_rs=xmlid.recordset
L_rs.pagesize=15
last1=L_rs.pagecount
//msgbox last1
list1 Last1
end sub
sub frist_onclick
list1 1
end sub
sub next_onclick
list1 int(document.page.pageno.value+1)
end sub
sub before_onclick
list1 int(document.page.pageno.value-1)
end sub
</script>
<div id=pagepage align="center"></div>
<center><form name="page">
<input name="pageno" type="text" value="1" size="4">
<input type="button" value="goto" name="to">
<table width="53%" height="43" border="0" cellpadding="0" cellspacing="0">
<tr align="center">
<td id="last"><a href="#">最后一页</a></td>
<td id="before"><a href="#">上一页</a></td>
<td id="next"><a href="#">下一页</a></td>
<td id="frist"><a href="#">第一页</a></td>
</tr>
</table>
</form>
</center>
</body>
</html>
xml.asp:
<!--#include file="conn.asp"-->
<%
set rs=server.createobject("adodb.recordset")
sql="select * from student"
rs.open sql,conn,1,1
%>
<?xml version="1.0" encoding="gb2312"?>
<students>
<% if not rs.eof then
while not rs.eof %>
<student>
<ID><% = rs("stu_id")%></ID>
<姓名><% = rs("stu_name")%></姓名>
<年龄><% = rs("stu_age") %></年龄>
<籍贯><% = rs("stu_from") %></籍贯>
<电话><% = rs("stu_tel")%></电话>
<性别><% = rs("stu_sex") %></性别>
</student>
<%rs.movenext
wend
end if%>
</students>
你们的方法我都研究了一下,孟兄的方法符合楼主的要求:用xsl对xml数据的分页显示。
但是孟兄的程序有一个较大的缺点,就是不能所有数据统一排序,而是按顺序显示,然后只在当前页中排序。
而不买日货的兄弟的方法使用脚本直接输出,并用ado --> recordset 控制分页,写程序简单,控制分页和排序也很简单。但是没有使用xsl
可以说两种方法各有特点。而且都是将数据调到客户端,用客户端脚本实现,这样可以将很多操作都转移到客户端完成,如果用户对一个查询记录集反复操作的话,能很好的减轻服务器的负担。但是如果数据总量特别大,而用户对一个查询记录集不反复操作,或者只反复操作一两次的话,就会加重服务器的负担。
---------------------------------------------------------------------------------
对于数据量较大的,使用XML分页时
最好在获取XML时,利用数据库或服务器端进行分页
不建议将所有数据分部获取生成XML后,使用DOM或xsl进行分页~~~~
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>xml</title>
<xml id="xmlid" src="xml.asp" async="false"></xml>
<style type="text/css">
<!--
body,td,th {
font-size: 12px;
}
-->
</style></head>
<body onLoad="list1 (1)" >
<script language="vbscript">
function list(page)
set rs=xmlid.recordset
rs.pagesize=15
dd=rs.pagecount
if page<=dd then
rs.absolutepage=page
str=" "
str=str& "<table width='94%' border='0' align='center' cellpadding='0' cellspacing='1' bgcolor='#336699'><tr align='center' bgcolor='#C0CCcc'>"
for i=0 to rs.fields.count-2
str=str& "<td>"
str=str& rs(i).name
str=str& "</td>"
next
str=str& "<tr>"
j=0
while not rs.eof
if j<=14 then
str=str& "<tr align='center' bgcolor='#FFFFFF'>"
for i=0 to rs.fields.count-2
str=str& "<td>"
str=str& rs(i)
str=str& "</td>"
next
str=str& "</tr>"
end if
j=j+1
rs.movenext
wend
str=str& ("</table>")
pagepage.innerHTML=str
document.page.pageno.value=page
else
msgbox "数据不够,总共才" & dd &"页"
end if
end function
function list1(page)
if xmlid.readystate=4 then
list page
else
settimeout "list1" &page,1
end if
end function
//---------------------------
sub to_onclick
list1 int(document.page.pageno.value)
end sub
//----------------------
sub last_onclick
set L_rs=xmlid.recordset
L_rs.pagesize=15
last1=L_rs.pagecount
//msgbox last1
list1 Last1
end sub
sub frist_onclick
list1 1
end sub
sub next_onclick
list1 int(document.page.pageno.value+1)
end sub
sub before_onclick
list1 int(document.page.pageno.value-1)
end sub
</script>
<div id=pagepage align="center"></div>
<center><form name="page">
<input name="pageno" type="text" value="1" size="4">
<input type="button" value="goto" name="to">
<table width="53%" height="43" border="0" cellpadding="0" cellspacing="0">
<tr align="center">
<td id="last"><a href="#">最后一页</a></td>
<td id="before"><a href="#">上一页</a></td>
<td id="next"><a href="#">下一页</a></td>
<td id="frist"><a href="#">第一页</a></td>
</tr>
</table>
</form>
</center>
</body>
</html>
xml.asp:
<!--#include file="conn.asp"-->
<%
set rs=server.createobject("adodb.recordset")
sql="select * from student"
rs.open sql,conn,1,1
%>
<?xml version="1.0" encoding="gb2312"?>
<students>
<% if not rs.eof then
while not rs.eof %>
<student>
<ID><% = rs("stu_id")%></ID>
<姓名><% = rs("stu_name")%></姓名>
<年龄><% = rs("stu_age") %></年龄>
<籍贯><% = rs("stu_from") %></籍贯>
<电话><% = rs("stu_tel")%></电话>
<性别><% = rs("stu_sex") %></性别>
</student>
<%rs.movenext
wend
end if%>
</students>
你们的方法我都研究了一下,孟兄的方法符合楼主的要求:用xsl对xml数据的分页显示。
但是孟兄的程序有一个较大的缺点,就是不能所有数据统一排序,而是按顺序显示,然后只在当前页中排序。
而不买日货的兄弟的方法使用脚本直接输出,并用ado --> recordset 控制分页,写程序简单,控制分页和排序也很简单。但是没有使用xsl
可以说两种方法各有特点。而且都是将数据调到客户端,用客户端脚本实现,这样可以将很多操作都转移到客户端完成,如果用户对一个查询记录集反复操作的话,能很好的减轻服务器的负担。但是如果数据总量特别大,而用户对一个查询记录集不反复操作,或者只反复操作一两次的话,就会加重服务器的负担。
---------------------------------------------------------------------------------
对于数据量较大的,使用XML分页时
最好在获取XML时,利用数据库或服务器端进行分页
不建议将所有数据分部获取生成XML后,使用DOM或xsl进行分页~~~~