2011-06-13 6 views
1

사용자 검색 결과에 바인딩 된 내 페이지에 gridview가 있습니다. 최대 1000 페이지까지있을 수 있습니다. 각 페이지에는 50 개의 레코드가 표시됩니다. 그리드 용 페이징 기능이 내장되어 있습니다. 그리드에서 viewstate를 비활성화하려고하지만 모든 페이지로드시 결과를 바인딩해야합니다. (페이징시 두 번 바인드). 검색에 몇 초가 걸리고 결과를 세션에 저장하고 싶지 않습니다. 그래서, 어떻게 그리드에 대한 viewstate를 끄거나 달성 할 수 있습니까?gridview에 대한 viewstate/databinding

매우 일반적인 시나리오 여야합니다. 이 작업을 수행하는 표준 방법이 있기를 바랍니다.

+0

ViewState를 사용하지 않으려는 이유는 무엇입니까? 페이지 당 50 레코드가 너무 많습니까? 또한 그리드의 페이징뿐만 아니라 데이터 소스 자체의 페이징을 고려하십시오. SQL 서버를 DBMS로 사용한 예 : http://stackoverflow.com/questions/548475/efficient-way-to-implement-paging –

+0

이 페이지의 성능은 매우 중요합니다. 조회는 140 만 레코드가있는 테이블에서 찾아보기를 수행합니다. 처음에는 CTE에 있었지만 정기적 인 선택보다 2 초 정도 더 걸립니다. 테이크 및 스킵에 관해서는 페이징 옆에있는 레코드의 총 수를 표시해야합니다. 이런 종류의 결과는 총 결과 수를 계산해야하므로 take/skip의 이점을 버립니다. 사용자 정의 페이징을 수행 할 수 있습니다. 방금 작업 할 충분한 시간이 없었습니다. 그러나 그것은 여전히 ​​viewstate의 문제를 해결하지 못합니다. 난 그냥 불필요한 오버 헤드를 제거하는 페이지를 최적화하려고합니다. –

답변

1

그리드보기를 바인딩하는 방법에 따라 서버 쪽 페이징을 구현하여 한 페이지에만 표시해야하는 서버의 데이터 만 되돌릴 수 있도록해야합니다.

어떤 데이터 액세스를 사용하고 있습니까? 즉, linq to sql을 사용하고 있습니까?

Heres는 뷰 상태에 정보 많은 양의 퍼팅 어디 이제까지 수는 페이지 및 효과 성능을 부풀게되므로 ObjectDataSource를 함께 Custom paging and sorting

피 그것을 수행하는 방법에 대한 기사.

+0

어떻게이 viewstate 도움이됩니다. 사용자 지정 페이징을 수행하더라도 테이블의 쿼리 및 크기가 복잡하기 때문에 결과를 얻는 데 몇 초가 걸릴 것입니다. 페이지에 불필요한 오버 헤드를 피하려고합니다. 하지만 지금 살펴볼 멋진 기사입니다. –

+0

이것은 50000이 아닌 서버에서 50 레코드만을 가져 오는 것과 같이 성능을 향상시키는 데 도움이됩니다.이 훨씬 작은 세트는 필요한 경우 viewstate에 추가 될 수 있습니다. –

+0

그리드가 50k 레코드에 바인딩되지만 한 번에 50 개만 표시하는 경우 뷰 스테이트에는 전체 세트가 아닌 50 개의 데이터 만 표시됩니다. 각 열에는 최대 8자를 표시하는 열이 약 17 개 있습니다. 그래서, 그것은 합산됩니다. –