2011-08-24 7 views
3

asp.net mvc 3 응용 프로그램을 개발 중이며 webgrid를 사용하여 내보기에 표 형식의 데이터를 표시하고 있습니다. 내 질문은 데이터베이스에있는 레코드 수를 세어 일부 데이터를 페이징하고 웹 그리드의 호출기를 그리드 바닥 글에 표시하는 방법은 무엇입니까? 예를 들어, 내 저장소에 내가 가진 :모델 및 개수로 webgrid를 호출합니다.

public PagedList<Acesso> ObterAcessos(long idPessoa, int pageIndex, int pageSize) 
{ 
    return new PagedList<Acesso> 
       { 
        PageIndex = pageIndex, 
        PageSize = pageSize, 
        Total = Session.QueryOver<Acesso>().Where(acesso => acesso.Pessoa.Id == idPessoa).FutureRowCount(), 
        List = Session.QueryOver<Acesso>() 
         .Where(acesso => acesso.Pessoa.Id == idPessoa) 
         .OrderBy(acesso => acesso.DataInicio).Desc 
         .Take(pageSize).Skip((pageIndex - 1)*pageSize) 
         .Future<Acesso>() 
       }; 
} 

내 컨트롤러 :

public ActionResult Acessos(int page = 1) 
{ 
    // 30 records per page 
    return View(_rep.ObterAcessos(SecurityHelper.User.Id, page, 30)); 
} 

내보기 :

@model PagedList<Acesso>  
@{ 
     ViewBag.Title = "Acessos"; 
     var grid = new WebGrid(rowsPerPage: Model.PageSize, canSort: false, ajaxUpdateContainerId: "grid"); 
     // set the rowCount by Total property and the List property 
     grid.Bind(rowCount: Model.Total, source: Model.List); 
    } 

     <h2>Acessos</h2> 

     @grid.GetHtml(htmlAttributes: new { id="grid", style="width:700px;" }, 
      mode: WebGridPagerModes.All, 
      tableStyle: "grid", rowStyle: "gridrow", alternatingRowStyle: "gridrow_alternate", 
      columns: grid.Columns(
        grid.Column("DataInicio", "Data de Inicio", item => item.DataInicio.ToString("dd/MM/yyyy HH:mm")), 
        grid.Column("IP", "IP")) 
      ) 

데이터를 잘 제공, 계산하고 목록이 오른쪽하지만 이 코드를 실행하면 페이지 데이터가 표시되지 않고 첫 번째 페이지 만 표시되고 webgrid의 호출기가 내보기에 표시되지 않습니다. 내가 설정할 수있는 물건이 있습니까? 당신의 grid.Bind에

autoSortAndPage: false 

() 그래서 읽습니다 :

당신이 모델의 페이징을하고 있기 때문에

답변

5

, 당신은 추가해야

grid.Bind(rowCount: Model.Total, source: Model.List, autoSortAndPage: false); 

에서 페이징을 사용하도록 설정해야합니다 그 꼬리말로 원하는대로.

+0

크리스, 감사합니다. 지금은 저에게 잘 작동합니다. –

+0

끝내 주셔서 감사합니다. :) – Chris