2010-05-11 10 views
3

데이터 세트에 페이징을 적용하려면 어떻게해야합니까? 데이터 집합에서 테이블을 동적으로 작성하는 방법이 있습니다. 내 데이터 집합을 가져 오는 데이터베이스를 쿼리하는 것은 문제가 아니지만 데이터 집합의 데이터row를 반복하는 것은 느립니다.데이터 세트에 페이징을 적용하는 방법은 무엇입니까?

많은 데이터 창을 포함하는 페이지를로드 할 때 성능을 높이려면 페이징 기능을 적용하고 싶습니다.

좋은 기능은 사용자가 페이지 크기 (각 페이지에 표시 할 행 수)를 설정할 수있는 기능입니다.

+0

당신은있는 DataPager 컨트롤을보고 할 수도 있고 SQL 서버의 옵션이다 : http://msdn.microsoft.com/en-us/library/system.web.ui .webcontrols.datapager.aspx 또는 저장 프로 시저를 통한 호출. 페이지 자체에서 페이지, 인덱스 및 페이지 크기를 유지 관리하고 데이터 하위 세트로 데이터 세트를 채울 수도 있습니다. –

답변

10

데이터가 단일 DataTable 인 경우 AsEnumerable() 확장 메서드를 사용할 수 있습니다. 그러면 IEnumerable 컬렉션으로 데이터가 반환됩니다. 그런 다음 LINQ 확장 메서드 인 .Skip() 및 .Take()를 사용할 수 있습니다.

IEnumerable<DataRow> MyDataPage = MyDataTable.AsEnumerable().Skip(100).Take(10); 

위의 코드는 행 당신에게 MyDataTable의 110-101을 줄 것이다 그리고 당신은 단지 데이터 테이블처럼 결합 할 수있는 IEnumerable을 수집 할 것이다.

DataTable NewDT = MyDataPage.CopyToDataTable(); 

더 자세한 정보를 사용할 수있는 당신은 데이터를 표시하고 페이징 기능을 사용하기의 GridView를 취할 수 here

0

: 당신이 그것을 필요로하는 경우에 따라서 그냥 CopyToDataTable를 (호출 할 수 있습니다 실제 DataTable을) 할 수 있습니다 : http://msdn.microsoft.com/en-us/library/5aw1xfh3%28v=VS.80%29.aspx

+0

네,하지만 우리 회사에서는 gridview, listview, dataview, ....와 같은 webcontrols를 사용하지 않습니다. 우리는 코드 숨김으로 테이블을 직접 수동으로 동적으로 구축합니다. –

0

Linq가 가장 좋습니다.

ROW_NUMBER()는 또한 2005

+0

SQL 서버 2008에서도 가능합니까? –

+0

@이지 도트 : 물론. –

관련 문제