Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用SqlDataSource在GridView中分页_.net_Sql Server_Pagination - Fatal编程技术网

.net 使用SqlDataSource在GridView中分页

.net 使用SqlDataSource在GridView中分页,.net,sql-server,pagination,.net,Sql Server,Pagination,我有一个GridView,它在数据集模式下访问SqlDataSource中的数据。我启用了分页功能,它可以工作,但在大型数据集上,提取数据需要非常长的时间 SqlDatSource似乎正在提取所有数据,然后在UI级别对其进行分页。这显然是一个糟糕的解决方案。我已经看过了,而且似乎是在同一个主题上——看起来我需要在我的SELECT语句中实现一些分页代码,我只是不确定如何做到这一点。如果有必要,我并不反对将其拉入存储过程,但是将SELECT命令留在SqlDataSource中会更好 我知道MySQL

我有一个GridView,它在数据集模式下访问SqlDataSource中的数据。我启用了分页功能,它可以工作,但在大型数据集上,提取数据需要非常长的时间

SqlDatSource似乎正在提取所有数据,然后在UI级别对其进行分页。这显然是一个糟糕的解决方案。我已经看过了,而且似乎是在同一个主题上——看起来我需要在我的SELECT语句中实现一些分页代码,我只是不确定如何做到这一点。如果有必要,我并不反对将其拉入存储过程,但是将SELECT命令留在SqlDataSource中会更好

我知道MySQL有限制X,Y,其中X是要检索的行数,Y是偏移量。TOP似乎没有做同样的事情,我也不知道如何将页面信息从GridView获取到SqlDataSource

这是最好的方法吗?如果是,我从哪里开始?还是有更好的方法从GridView中的SqlDataSource获得有效的分页

如果重要的话,我会用C,但我认为不应该


谢谢。

行号是您的朋友,请在本例中使用:

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表示正确的方向,更大的问题是如何创建用于提供通用分页的动态包装。。