2013-08-26 4 views
1

누군가가 사용자 지정 페이징, 필터링 및 정렬에 대해 설명해 주실 수 있습니까? 인터넷에서 이러한 것들을 검색했지만 그 모든 방법을 이해하기 어렵습니다. 어떤 몸이라도 단일 쿼리에서 페이징, 필터링 및 정렬을 수행하는 더 좋은 방법을 가지고 있습니다. 또한 어떻게 하나의 쿼리에서 모든 것들을 할 수있을 것입니다 사실은 forloop를 사용하여 그리드를 만들었습니다. 그래서, 어떻게 페이징과 필터링 customs을 할 수 있습니다. 나는 loginc하지만 나는 이해하지 못했습니다. 행 번호는 많은 온라인 페이징 예제에서 사용되고 있습니다. 누군가는 이것을 설명 할 수 있습니까? 가난한 영어를 유감스럽게 생각합니다. 최대한 빨리 도와주세요. 고맙습니다.SQL Server 2005의 페이징, 정렬 및 필터링

답변

0

많은 양의 데이터를 표시하는 가장 쉬운 방법은 그리드입니다. asp:GridView의 예를 시도해 볼 수 있습니다. 그리드가 자동으로 추가하는 기본적인 기능은 (당신이 페이징을 사용할 때)입니다 : 페이지 사이를 이동하는

  • 이전 페이지, 다음 페이지 및 이와 유사한 버튼
  • 최대 페이지/항목이 계산
  • 현재 페이지

중요한하지 페이징에 :

  • 클라이언트 측 페이징 :로드 모든 한 번에 데이터가 표시되지만 한 번에 10/15/20/... 항목 만 표시
  • 서버 쪽 페이징 :보고있는 페이지 만로드하십시오 (따라서 다른 페이지로 이동할 때마다 데이터베이스 호출이 있습니다 필요)

일반적으로 클라이언트 쪽 페이징은 '기본값'입니다. 표에 목록을 지정하고 페이지 당 표시 할 항목 수를 설정하면 완료됩니다. 이것은 작은 테이블 (수십 가지 항목)에 대해서는 충분하지만 규모가 매우 작 으면 잘 작동합니다. 테이블에 백만 개의 항목이있는 경우 항목을 표시하기 전에 모든 항목을로드하려고 시도합니다.

표시 할 항목의 수를 제한 할 수는 있지만 큰 테이블을 처리하는 가장 좋은 방법은 서버 쪽 페이징입니다. 이를 위해서는 몇 가지 맞춤 설정이 필요합니다. 여기서 언급 한 'rownumber'가 필요합니다 (Server Side paging example). rownumber를 사용하면 '페이지'를 가져올 수 있습니다. 예 :

  • 페이지 : 5
  • 총 (레코드 수) : 100
  • 페이지 크기 (한 페이지 당 표시 할 레코드 수) : 10

당신이 페이지에 대한 기록을하고자한다면 5를 사용하려면 목록을 어떻게 든 정렬 한 다음 레코드 41에서 50까지 가져 와서 페이지 5의 내용을 표시해야합니다. 쿼리에서이 작업은 ROWNUMBER BETWEEN ((Page - 1) * PageSize) + 1 AND Page * PageSize을 사용하여 수행 할 수 있습니다. Entity Framework에서 .Skip((Page - 1) * PageSize).Take(PageSize)을 사용하면 동일한 결과를 얻을 수 있습니다.

참고 : 위의 예에서 페이징은 1 (첫 번째 페이지 = 1 페이지)부터 시작한다고 가정합니다.