.net 使用SqlDataSource在GridView中分页
我有一个GridView,它在数据集模式下访问SqlDataSource中的数据。我启用了分页功能,它可以工作,但在大型数据集上,提取数据需要非常长的时间 SqlDatSource似乎正在提取所有数据,然后在UI级别对其进行分页。这显然是一个糟糕的解决方案。我已经看过了,而且似乎是在同一个主题上——看起来我需要在我的SELECT语句中实现一些分页代码,我只是不确定如何做到这一点。如果有必要,我并不反对将其拉入存储过程,但是将SELECT命令留在SqlDataSource中会更好 我知道MySQL有限制X,Y,其中X是要检索的行数,Y是偏移量。TOP似乎没有做同样的事情,我也不知道如何将页面信息从GridView获取到SqlDataSource 这是最好的方法吗?如果是,我从哪里开始?还是有更好的方法从GridView中的SqlDataSource获得有效的分页 如果重要的话,我会用C,但我认为不应该.net 使用SqlDataSource在GridView中分页,.net,sql-server,pagination,.net,Sql Server,Pagination,我有一个GridView,它在数据集模式下访问SqlDataSource中的数据。我启用了分页功能,它可以工作,但在大型数据集上,提取数据需要非常长的时间 SqlDatSource似乎正在提取所有数据,然后在UI级别对其进行分页。这显然是一个糟糕的解决方案。我已经看过了,而且似乎是在同一个主题上——看起来我需要在我的SELECT语句中实现一些分页代码,我只是不确定如何做到这一点。如果有必要,我并不反对将其拉入存储过程,但是将SELECT命令留在SqlDataSource中会更好 我知道MySQL
谢谢。行号是您的朋友,请在本例中使用:
DECLARE @test TABLE (LastName varchar(25),FirstName varchar(25))
INSERT INTO @test values ('Jones','Billy')
INSERT INTO @test values ('Jones','Suzie')
INSERT INTO @test values ('Jones','Beth')
INSERT INTO @test values ('Jones','Ron')
INSERT INTO @test values ('Jones','Dan')
INSERT INTO @test values ('Smith','Abby')
INSERT INTO @test values ('Smith','Debbie')
INSERT INTO @test values ('Smith','Joe')
INSERT INTO @test values ('Smith','Dan')
INSERT INTO @test values ('Brown','Matt')
INSERT INTO @test values ('Brown','Rob')
;WITH TestRank AS
(
select
LastName,FirstName, row_number() over(order by LastName,FirstName) AS RowNumber
from @test
)
SELECT
LastName,FirstName
FROM TestRank
WHERE RowNumber>=3 AND RowNumber<=5
ORDER BY RowNumber
让应用程序跟踪页面上显示的内容。如果要在一个页面上显示10行,返回1-11,显示1-10,如果rowcount==11,显示下一个链接。ROW\u NUMBER是您的朋友,请在本例中使用类似:
DECLARE @test TABLE (LastName varchar(25),FirstName varchar(25))
INSERT INTO @test values ('Jones','Billy')
INSERT INTO @test values ('Jones','Suzie')
INSERT INTO @test values ('Jones','Beth')
INSERT INTO @test values ('Jones','Ron')
INSERT INTO @test values ('Jones','Dan')
INSERT INTO @test values ('Smith','Abby')
INSERT INTO @test values ('Smith','Debbie')
INSERT INTO @test values ('Smith','Joe')
INSERT INTO @test values ('Smith','Dan')
INSERT INTO @test values ('Brown','Matt')
INSERT INTO @test values ('Brown','Rob')
;WITH TestRank AS
(
select
LastName,FirstName, row_number() over(order by LastName,FirstName) AS RowNumber
from @test
)
SELECT
LastName,FirstName
FROM TestRank
WHERE RowNumber>=3 AND RowNumber<=5
ORDER BY RowNumber
让应用程序跟踪页面上显示的内容。如果要在页面上显示10行,返回1-11,显示1-10,如果rowcount==11,显示下一个链接。+1表示正确的方向,更大的问题是如何创建用于提供通用分页的动态包装。+1表示正确的方向,更大的问题是如何创建用于提供通用分页的动态包装。。