怎么实现数据记录的分页显示[转]

转载 2004年09月27日 17:39:00

怎么实现数据记录的分页显示(作者:DarkMan)

怎么实现数据记录的分页显示 (1)

通过Recordset的GetRows方法,可以实现数据记录的分页显示。下面是一个完整的例子:
<%@ Language = VBSCRIPT %>
<% Option Explicit %>
<%
Dim iStart, iOffset
iStart = Request("Start")
iOffset = Request("Offset")

if Not IsNumeric(iStart) or Len(iStart) = 0 then
iStart = 0
else
iStart = CInt(iStart)
end if

if Not IsNumeric(iOffset) or Len(iOffset) = 0 then
iOffset = 10
else
iOffset = Cint(iOffset)
end if

Response.Write "察看 " & iOffset & " 个记录从 " & iStart & "开始 <BR>"

Dim objConn, objRS
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=SQLOLEDB.1;Data Source=(local);uid=sa;pwd=;Initial  Catalog=pubs"

Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open "SELECT * FROM Authors", objConn

Dim aResults
aResults = objRS.GetRows

objRS.Close
Set objRS = Nothing

objConn.Close
Set objConn = Nothing

Dim iRows, iCols, iRowLoop, iColLoop, iStop
iRows = UBound(aResults, 2)
iCols = UBound(aResults, 1)

If iRows > (iOffset + iStart) Then
iStop = iOffset + iStart - 1
Else
iStop = iRows
End If

For iRowLoop = iStart to iStop
For iColLoop = 0 to iCols
 Response.Write aResults(iColLoop, iRowLoop) & " "
 Next
Response.Write "<BR>"
 Next

Response.Write "<P>"
if iStart > 0 then
'显示“前 10个”连接
Response.Write "<A HREF=""paging.asp?Start=" & iStart-iOffset & _
 "&Offset=" & iOffset & """>前 " & iOffset & "</A>"
 end if

if iStop < iRows then
'显示“后 10个”连接
 Response.Write " <A HREF=""paging.asp?Start=" & iStart+iOffset & _
"&Offset=" & iOffset & """>后 " & iOffset & "</A>"
end if
%>


怎么实现数据的分页显示(2)
这里介绍另外一种分页显示的方法,是通过 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
</FONT>
</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%>'"> ;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 <% end if

'最后一页 不显示“后一页”
 if Not bolLastPage then %>
<INPUT TYPE=BUTTON VALUE="后 <%=iMaxRecords%> 记录 >>"
ONCLICK="document.location.href='thispage.asp?page=<%=currentPage+1%>'"> ;
 <% end if %>
</CENTER>


 

Android ListView实现分页显示数据

当有大量的数据需要加载到ListView的Adapter中时,全部一次性加载,通常会非常耗时,这将严重影响用户的体验性和流畅性,而分页加载则会优化加载的速度,先暂时显示一页能够显示的数据项,在拖动到最...
  • carterjin
  • carterjin
  • 2012年04月26日 09:48
  • 4751

ASP.NET(四):ASP.net实现假分页显示数据

导读:在做数据查询的时候,有的时候查询到的数据有很多。通常呢,我们一般都是去拖动右侧边的滚动条。但是,有了分页后,我们就可以不必是使用滚动条,而直接通过分页查看我们想要的数据。在分页的过程中,有分为真...
  • u013034889
  • u013034889
  • 2015年05月09日 16:03
  • 1315

VB数据库之分页显示记录——实例04

分页显示记录正如我们在大学里选课时遇到的,每页显示多少科目,共有多少页。其实,这里主要用到的是Data Grid控件。接下来我来介绍一下关于它的知识。 一.原理:将原记录页的数据复制到一个新...
  • wangyy130
  • wangyy130
  • 2013年06月01日 09:53
  • 1664

jsp+MVC分页读取数据库中的数据

今天要用到分页,以前没写过,我是个菜鸟,再网上找了,有的确实好,但不会用,最后在网上找了一个自己再修改了一下,顺便记录下来,以考初学者们参考用法很简单,只要你修改一下DbUtil这个类中的数据库名和用...
  • hnbcjzj
  • hnbcjzj
  • 2007年11月21日 18:08
  • 4170

数据条目过多时如何在网页上分页显示

加载更多 "> My JSP 'product
  • yueloveme
  • yueloveme
  • 2017年09月06日 21:00
  • 447

java中对list进行分页显示数据到页面

有时候需要根据条件查询得出的数据较多,需要分页显示到页面上。这时点击下一页就不方便每次带查询条件在数据库中分页。可以在list中进行分页。page的model类:public class Page {...
  • Tang_Mr
  • Tang_Mr
  • 2017年07月27日 17:35
  • 1719

在jTable中分页显示数据

主要方法就是,建立一个Vector,首先将所有的数据都读入到Vector中,然后根据每页需要显示的数目来从Vector中选取需要的数据。 /* * TableTest.java * * Created...
  • featheast
  • featheast
  • 2008年11月05日 19:33
  • 5625

看看JSP中怎样实现分页显示(雇员管理)

分页显示在实际的开发中使用的是非常的多,下面是一个对雇员列表进行显示的例子,分别使用不分页、分页(假分页和真分页)进行显示,有完整的代码,如果你想学习分页,这绝对是很好的学习资料。 1、不使用分页进...
  • cselmu9
  • cselmu9
  • 2012年08月01日 18:52
  • 6647

java web实现分页显示数据

java web实现分页显示数据  (2012-10-22 17:01:03) 转载▼ 标签:  分页显示   javaee   javaweb ...
  • n8765
  • n8765
  • 2015年08月04日 16:05
  • 1618

Servlet——实现数据分页显示

本文讲述了Servlet中连接数据库以及实现数据分页显示的方法。
  • ggGavin
  • ggGavin
  • 2016年05月06日 22:39
  • 7092
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:怎么实现数据记录的分页显示[转]
举报原因:
原因补充:

(最多只允许输入30个字)