在我的 ASP 页面中进行分页的最佳方法是什么

问题描述 投票:0回答:3

显示项目列表时在 ASP 页面中进行分页的最佳方法是什么?

我知道 SQL Server(2000 年或 2005 年)中没有与 MySQL 的

LIMIT
子句等效的语句。

如何从数据库中检索某些特定记录(记录20至30)?

我是否需要从数据库中获取所有记录并在 ASP 页面中执行某些操作来显示所需的记录?

sql-server pagination asp-classic
3个回答
4
投票

显示项目列表时在 ASP 页面中进行分页的最佳方法是什么?

我只是想在小麦先生的回答中再添加一项功能。为什么你不尝试使用 linq 的 Take () 和 Skip() 功能(显然如果你使用 dotnet 框架 3.5+)

在处理大型数据集时确实很有帮助。

看看 在 LINQ 查询中使用 Take 和 Skip 方法

我知道SQL Server中没有MySQL LIMIT子句(2000和2005都应该支持)。我如何从数据库中检索某些特定记录(记录20 -30)?

您可以在 SQLSERVER 2005+ 中通过使用排名函数 Row_Number() 以及其他替代方法来执行此操作。此处包含一个示例

首先,我创建一个虚拟表并插入大约 50 条记录

declare @tbl table(name varchar(50),age int)
;with num_cte as
(   select 1 as rn
    union all
    select rn+1 from num_cte where rn<50
)  
insert @tbl
select  names ,rn + 20 ageval                
from num_cte
cross apply( select  'name' + CAST(rn as varchar(2))  AS names) names
select * from @tbl

现在通过使用 Row_Number() 函数,我正在选取 20 到 30 之间的记录

select name,age from(
select ROW_NUMBER()over (order by age) as rownum,name,age from @tbl) X
where X.rownum between 20 and 30

但是,为了在 SQL SERVER 2000 中实现相同的目的,以下查询将有所帮助

select name,age from(
select t1.name,t1.age,
(select count(*)+1 from @tbl where name<>t1.name and age<=t1.age) rownum
from @tbl t1
)X(name,age,rownum)
where rownum between 20 and 30


0
投票

您需要使用

ROW_NUMBER
(SQL Server 2005+)

 SELECT * FROM
    (SELECT a.*, ROW_NUMBER() OVER (ORDER BY hire_date) rn
    FROM hr.employees AS OF TIMESTAMP (TIMESTAMP '2009-01-29 10:30:00') a)
 WHERE rn BETWEEN 10 AND 19

相关解答

使用

ROW_NUMBER
,您可以对本质上未排序的组(表格)进行编号和排序。一旦你有了一个有序集而不仅仅是一个,你现在就可以说“我想要从10到19的所有行”这句话就有意义了。

您必须使用 ASP 代码来保留上部和下部元素,以便您可以要求显示下一个或上一个行子集。

© www.soinside.com 2019 - 2024. All rights reserved.