首页 | DV动态 | 数码产品 | 视频采编 | 网站建设 |
【收藏DV】
  最近3月排行
·赤马劫
·高中英语-单词表
·常用网管软件下载,持续更新中...
·品牌VIS设计以及CI、VI、VIS、UI、SI的含义
怎么实现数据的分页显示
2005/12/29 8:37:45
 

这里介绍的方法,是通过 MS SQL的存储过程。本方法不适用于Access数据库。
假设我们要对数据表MyTable的数据实现分页显示,首先写一个存储过程 如下:
CREATE PROCEDURE sp_PagedItems
(
@Page int,
@RecsPerPage int
)
AS

-- 加快表的 插入速度
SET NOCOUNT ON

-- 开始记录 号
DECLARE @RecCount int
SELECT @RecCount = @RecsPerPage * @Page + 1

--创建临时 表
CREATE TABLE #TempItems
(
ID int IDENTITY,
Name varchar(50),
Price currency
)

-- 准备临时 表
INSERT INTO #TempItems (Name, Price)
SELECT Name,Price FROM MyTable ORDER BY Price

-- 求出要查 询的最小ID和最大ID
DECLARE @FirstRec int, @LastRec int
SELECT @FirstRec = (@Page - 1) * @RecsPerPage
SELECT @LastRec = (@Page * @RecsPerPage + 1)

-- 得到实际 的记录,并返回是否还有数据!
SELECT *,
MoreRecords =
(
SELECT COUNT(*)
FROM #TempItems TI
WHERE TI.ID >= @LastRec
)
FROM #TempItems
WHERE ID > @FirstRec AND ID < @LastRec

-- 恢复设置
SET NOCOUNT OFF

在这个存储过程里,我们首先创建一个全部 记录的临时表,并增加了一个自动编号的字段ID。这样,不同的记录就有
一个递增的唯一标志。
根据当前的页号和每页的记录数,可以计算 出每页的最小和最大的ID。从而得到当前页的所有记录。
为了显示的方便,存储过程还计算了 MoreRecords字段,作为显示下一页的判断条件。
利用了这个存储过程的程序代码如下:
<%
'每页显示10条
Const iRecordsPerPage = 10

Dim currentPage '当前页号
Dim bolLastPage '在最后一页?

if len(Request.QueryString("page")) = 0 then
currentPage = 1
else
currentPage = CInt(Request.QueryString("page"))
end if

'得到当前页的记录
strSQL = "sp_PagedItems " & currentPage & "," & iRecordsPerPage
objRS.Open strSQL, objConn

'判断是否在最后一页
if Not objRS.EOF then
if CInt(objRS("MoreRecords")) > 0 then
bolLastPage = False
else
bolLastPage = True
end if
end if
%>
<P>

<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 ALIGN=CENTER>
<TR><TH COLSPAN=2 BGCOLOR=NAVY>
<FONT SIZE=+1 COLOR=WHITE>
List of Items

</TH></TR>
<%
Do While Not objRS.EOF %>
<TR><TD ALIGN=LEFT BGCOLOR=GRAY>
<%=objRS("Name")%>
</TD><TD ALIGN=CENTER BGCOLOR=GRAY>
<%=FormatCurrency(objRS("Price"))%>
</TD></TR>
<% objRS.MoveNext
Loop %>
</TABLE>
<P>
<CENTER>
<%

'第一页不 显示“前一页”
if currentPage > 1 then %>
<INPUT TYPE=BUTTON VALUE="<< 前 <%=iMaxRecords%> 记录 "
ONCLICK="document.location.href='thispage.asp?page=<%=currentPage-1%>'"> ;
    
<% end if

'最后一页 不显示“后一页”
if Not bolLastPage then %>
<INPUT TYPE=BUTTON VALUE="后 <%=iMaxRecords%> 记录 >>"
ONCLICK="document.location.href='thispage.asp?page=<%=currentPage+1%>'"> ;
<% end if %>
</CENTER> (DVOL本文转自:中国DV传媒 http://www.dvol.cn)

欢迎关注微信公众账号:手机烟台(mYantai)

 

  上一篇:asp中正则表达式的应用
  下一篇:ASP开发必备:WEB打印代码大全
      更多...
::打印本页 ::      ::关闭窗口::


版权所有© 数码在线网站 DV OnLine©  鲁ICP备12016322号-1