分页函数

王朝other·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

<%

private function fenye(rs, pagesize,args)

Dim intcur

Dim intpagesize

Dim total

Dim inttotal

args = split(args,",")

if Request.querystring("page")="" then

intcur=1

page = "first"

else

select case request("page")

case "first"

intcur=1

case "previous"

intcur=cint(request("curpage"))

intcur=intcur-1

case "next"

intcur=cint(request("curpage"))

intcur=intcur+1

case "last"

intcur=cint(request("lastpage"))

case else

intcur=request("page")

end select

end if

%>

<table width="100%" border="0" cellpadding="0" cellspacing="0">

<tr>

<td colspan="2" height="58">

<%

if rs.eof then

response.write "没有栏目:("

else

intpagesize=pagesize

rs.pagesize=intpagesize

if not rs.eof then

rs.AbsolutePage=intcur

end if

total=rs.recordcount

inttotal=rs.pagecount

Dim i

i = 0

%>

<table border = 1 align = center>

<tr>

<%

Dim n

n = 0

do while n <= UBound(args)%>

<th>

<%response.write args(n)%>

</th>

<%

n = n + 1

loop

%>

</tr>

<%

do while NOT rs.EOF and i<intpagesize%>

<tr>

<%

Dim l

l = 0

do while l <= UBound(args)

%>

<td>

<%=rs(args(l))%>

</td>

<%

l = l + 1

loop

%>

</tr>

<%

i = i + 1

rs.MoveNext

loop

%>

</table>

<%

end if%>

</td>

</tr>

</table>

<div align="center"><br>

<%=intcur%> /<%=inttotal%>

<% if intcur>1 then %>

<a href="index.asp?page=previous&curpage=<%=intcur%>">上一页</a>

<%else%>

上一页

<%end if

intcur=cint(intcur)

inttotal=cint(inttotal)%>

<%if intcur<inttotal then%>

<a href="index.asp?page=next&curpage=<%=intcur%>">下一页</a>

<%else%>

下一页

<%end if%>

</div>

<%

rs.close

set rs = nothing

end function

%>

测试页面如下:

<!--#include file = "fenye.inc"-->

<%

dim conn

dim connstr

dim rst

on error resume next

connstr="DBQ="+server.mappath("Nwind.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"

set conn=server.createobject("ADODB.CONNECTION")

conn.open connstr

set rst = server.createobject("adodb.recordset")

rst.open "select * from orders",conn,1,1

call fenye(rst,7,"OrderID,CustomerID,ShipVia")

rst.close

set rst = nothing

conn.close

set conn = nothing

%>

说明:

使用时在asp页面顶部加入

<!--#include file = "fenye.inc">

在需要分页的地方调用函数:

如:call fenye(rst,7,"OrderID,CustomerID,ShipVia")

函数原型:

variant fenye(recordset rs,integer pagesize,String args)

参数说明如下:

rs: 传入的recordset

n: 要求每页显示的记录数

columns: 要求显示的数据库中的字段

做这样一个分页函数是因为有时自己写分页的时候觉得不是那么方便,每个地方都写一遍很浪费,也看到很多朋友都在问这个问题,所以写这样一个函数大家参考一下吧,第一次写这种东西,感觉很低级,但是还是希望大家捧场。。。。。谢谢!!!欢迎各种意见和建议!顺便说一下,这种ado的分页方法,我觉得实在是效率很低,因为我每次只要7条记录但是却要取出一个上百条甚至上千条的纪录集,如果一个服务器端的数据量少也就罢了,如果。。。。唉。。。所以,以后会再做几个不同原理的分页函数!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航