2011-04-07 64 views
3

我想要从sql server中检索大数据。我希望它逐行加载并显示在DataGridView中。就像我在Sql服务器管理工​​作室2005中执行Sql脚本一样。我该怎么做?!如何在C中的DataGridView中进行延迟加载#

+0

你的意思是分页? – Nighil 2011-04-07 04:37:53

+0

不,这样的:http://img690.imageshack.us/i/loadingresult.png/。在加载数据过程中,我希望它在DataGridView上显示可用数据 – dungnn07 2011-04-07 04:40:40

回答

0

使用这种查询分页

DECLARE @PageIndex int=1 
DECLARE @PageSize int=10 
DECLARE @StartRow int 
DECLARE @EndRow int 


SET @StartRow = (@PageSize * (@PageIndex - 1)) + 1 
SET @EndRow = @PageSize * @PageIndex + 1 

SET NOCOUNT ON; 

WITH ArticleSearch AS 
(
    SELECT 
     ROW_NUMBER() OVER 
     (
      -- Dynamic sorting 
      ORDER BY  tablename.fieldname 


     ) AS RowNumber, * 


    FROM   tablename 

) 

-- Statement that executes the CTE 
SELECT * 
FROM 
     ArticleSearch a 
WHERE 
     a.RowNumber BETWEEN @StartRow AND @EndRow - 1 
ORDER BY 
     a.RowNumber 

可以在每个页面传递的PageIndex作为参数,以获得您想要显示的页面和页面大小总记录

+0

不,我不想使用分页。我等待数据必须加载到dataGridView上,并且在加载过程尚未完成时,可用数据必须显示在gid上。 – dungnn07 2011-04-07 04:56:23

+0

然后您必须通过分页查询每一行并将每行逐行添加到datagrid – Nighil 2011-04-07 05:07:14

+0

但是,这意味着数据必须在发布到DataGridView之前加载。我希望当所有数据尚未加载完成时,加载的可用数据必须显示在上面。 – dungnn07 2011-04-07 05:41:36

0

你可以使用一个SqlDataReader这样做,我很确定它在SSMS中使用。每次您从阅读器读取记录(或一批记录)时,都会在用户界面中显示它。

不要忘记在阅读完成后关闭阅读器。