문제

다음과 같은 개체 컬렉션에 데이터 바인딩하는 ListView가 있습니다.

int total;
List<Client> clientList = 
    clientData.GetClients(criteria, pageNum, pageSize, out total);
uxClientList.DataSource = clientList;
uxClientList.DataBind();

pageNum, pageSize 및 total 매개변수는 데이터 액세스 계층에서 페이징을 용이하게 합니다.여태까지는 그런대로 잘됐다.

이제 페이지에 DataPager를 던지고 이를 ListView에 지정하면 괜찮은 페이징 UX를 얻을 수 있습니다. 데이터 소스 컨트롤을 선언적으로 바인딩하는 대신 프로그래밍 방식으로 바인딩하면 좀 더 많은 작업이 가능합니다., 그러나 여기서 문제는 DataPager가 페이지 매김을 계산해야 하는 전체 결과 세트가 매번 검색될 것으로 예상하므로 반환된 결과의 단일 페이지를 사용 가능한 총 레코드로 보고 마치 하나만 ​​있는 것처럼 렌더링된다는 것입니다. 결과 페이지를 사용할 수 있습니다.즉, GetClients의 비페이징 버전으로 전환하면 위의 시나리오는 DataPager에서 잘 작동합니다.

List<Client> clientList = clientData.GetClients(criteria);
uxClientList.DataSource = clientList;
uxClientList.DataBind();

분명히 우리의 데이터 액세스 계층은 한 번에 페이지를 검색하는 방법을 제공할 만큼 친절하기 때문에 매번 모든 레코드를 검색하는 것보다 이것이 더 좋습니다.DataPager에 사용 가능한 전체 레코드를 명시적으로 알려서 자동으로 페이지 매김 출력을 생성할 수 있으면 좋을 것입니다. 하지만 그렇게 하려면 한 번에 한 페이지만 필요합니다.

나는 이 작업을 수행하는 쉬운 방법을 찾지 못했고 검색에서도 아무 것도 나오지 않았습니다.물론 나는 현재 DataPager 구현에 대해 깊이 이해하고 있지 않으므로 뭔가 간과하고 있는 것이 있기를 바랍니다.

도움이 되었습니까?

해결책

당신은 아무것도 간과하지 않았습니다.

대규모 결과 집합을 처리할 때는 페이징을 끄고 고유한 페이징 컨트롤을 추가해야 합니다.

내 경험으로는 << < > >> 충분합니다.어쨌든 아무도 3페이지를 넘기지 않습니다.

다른 팁

ListViewPagedDataSource와 그 내용을 살펴보십시오. AllowServerPaging 재산, 내 생각엔 5월 당신이 찾고 있는 것이 되세요..

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top