2012-08-24 2 views
-1

MVC3 컨트롤러 동작에 다음 C# 코드가 있습니다.ASP.Net MVC3 데이터 페이징

public ActionResult MyDocuments(int Page) 
{ 
    int start = (Page==1?1:(Page-1)*4); 
    int end = (Page==1?4:start + 4); 
    // start parameter begins at 1 
    Archive docs = mps.GetArchive(start, end); 
    ViewBag.docs = docs; 
    if (docs.Rows.Count() < 4) 
    { 
     ViewBag.lastPage = 1; 
    } 
    else 
    { 
     ViewBag.lastPage = 0; 
    } 
    ViewBag.pagenum = Page; 
    return View(); 
} 

내가 가진 문제는 항상 이전 페이지의 마지막 항목으로 다음 페이지를 시작한다는 것입니다.

내가 뭘 잘못하고 있니? 얼마나 많은 페이지가 있을지 모르겠다. 단지 숫자가 <인지 확인하기 위해 docs 객체에 반환 된 값을 확인하기 만하면 ViewBag.lastPage 값을 설정하여 내 View 및 ViewBag에서 다음 btn을 사용하지 않도록 설정한다. .pagenum은보기의 pagenum 값을 현재 페이지 번호로 설정합니다.

+0

Page 1 특별한 경우가 아니어야합니다. 수식을 변경하십시오. –

+0

당신은 이것을 downvoted 사람 이었습니까? – MB34

답변

1

귀하의 mps.GetArchive(start, end) 메소드가 startend 사이의 모든 레코드를 반환하는 것으로 의심됩니다. 일반적으로 최종 값은 제외되어야합니다.

방법의 작동 방식을 변경할 수없는 경우 mps.GetArchive(start, end - 1)이라고 부릅니다.