2012-01-02 5 views
0
var skip = selectedPage*pageSize; 
      var take = Math.Min(result.DataSourceCount - skip, pageSize); 

      List<SENTINEL_OPERATION> results = sentinelOperationManager.SearchSentinelOperations(sid).Skip(skip).Take(take).ToList(); 

내 마지막 페이지는 항상 비어 있습니다. 나는 PageDataSource를 사용하여 Pageize를 얻고 jquery ajax get을 사용하여 클릭 된 페이지를 보냅니다. 내가 뭐 놓친 거 없니? 감사합니다건너 뛰기 및 가져 오기 방법을 사용하여 페이지 매김

+2

selectedPage가 1 또는 0에서 시작합니까? – alun

+0

'take '양은'pageSize'를 사용할 수 있습니다 - 제공된 목록이 더 작 으면 문제가 없습니다. –

+0

@alun 1에서 시작하여 -1을 추가 했으므로 이제 작동하는 것 같습니다. – Johan

답변

6

나는 그 selectedPage 코드에서 1에서 시작하고 이것은 erros의 원인입니다 내기. 그런 다음 첫 번째 페이지에서 skip == pageSize을 얻고 마지막 페이지에서 "범위를 벗어남"으로 이동하지만 "실제"첫 페이지를 건너 뜁니다. 1selectedPage에서 시작은 다음 식에이 변경하면

: 또한

var skip = (selectedPage - 1) * pageSize; 

는 - 수동 take 값을 산출 할 필요가 없다. 당신은 단지 pageSize을 전달할 수 있으며, 항상 작동 할 것입니다. 데이터 소스에 요소가 충분하지 않으면 잘못된 요소가 발생하지 않고 사용 가능한 요소 만 반환됩니다.

+0

첫 번째 부분 만 보았습니다. 이 말이 맞습니다. 아프다 테이크 파트도 조정 해줘서 고마워! – Johan

관련 문제