2011-04-07 6 views
3

SQL Server에서 큰 데이터 검색. 행별로로드하고 DataGridView에 표시하고 싶습니다. 내가 SQL 서버 관리 스튜디오 2005에서 Sql 스크립트를 실행하는 것처럼. 어떻게 그럴 수 있습니까?! 각 페이지에 총 레코드는 표시하려는 페이지 얻을 인수 및 페이지 크기로 pageindex 통과 할 수C#의 DataGridView에서 지연로드하는 방법

+0

당신은 페이징을 의미합니까? – Nighil

+0

아니요, 다음과 같습니다. http://img690.imageshack.us/i/loadingresult.png/. 데이터 프로세스로드 중 DataGridView에서 데이터를 표시하고 싶습니다. – dungnn07

답변

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 

이 쿼리는

+0

아니요, 페이징을 사용하고 싶지 않습니다. 데이터가 dataGridView에 모두로드되어야하고로드 프로세스에서 아직 완료되지 않았으므로 사용 가능한 데이터가 gid에 표시되어야합니다. – dungnn07

+0

그런 다음 각 행을 페이징하여 쿼리하고 데이터 그리드에 행별로 각 행을 추가해야합니다. – Nighil

+0

그러나 DataGridView에 게시하기 전에 데이터를로드해야합니다. 모든 데이터가 아직로드되지 않았을 때로드 된 사용 가능한 데이터가 표시되어야합니다. – dungnn07

0

당신은 그렇게 할 SqlDataReader을 사용할 수 있습니다 , 나는 그것이 SSMS에서 사용된다고 확신한다. 독자가 레코드 (또는 일괄 레코드)를 읽을 때마다 사용자 인터페이스에 표시합니다.

읽기가 끝나면 판독기를 닫는 것을 잊지 마십시오.

0

Backgroundworker 클래스를 사용하여 데이터로드를 시도 할 수 있습니다. 진행 업데이트 호출에서 DataGridview를 업데이트 할 수 있습니다. 또한 진행률 표시기.

확인이 링크 : 그것은 디렉토리를 표시 포함

  1. http://geeknotes.wordpress.com/2007/09/19/using-backgroundworker-to-update-status/
  2. Using a Background Worker - Update a ProgressBar on the progress of a Recursive Method

있는 BackgroundWorker를 사용하여.

관련 문제