2016-06-06 10 views
1

우선 ASP.NET MVC를 처음 사용합니다.ASP.net에서 jqgrid에서 정렬/페이징 MVC

저장 프로 시저를 사용하여 JqGrid에서 사용자 지정 정렬 및 페이징을 수행하려고합니다. 저장 프로 시저에 대한 매개 변수는 StartIndex, PageSize, SortExpression입니다.

jqgrid에있는 각 탐색에서 현재 페이지 세부 정보 및 정렬 세부 정보를 얻고 내 작업 방법으로 전화하는 방법은 무엇입니까?

지금까지 내가 알고있는 저장 프로 시저 쪽이 좋습니다. 하지만 처음으로로드 할 때 10 개의 레코드가 검색됩니다. 총 레코드 수는 16입니다. 그러나 2 페이지를 보거나 예상 된 다음 페이지로 이동하기위한 제어를 볼 수 없습니다.

$(function() { 
    $("#myGrid").jqGrid({ 
     url: '/Request/GetRequests/', 
     datatype: 'json', 
     mytype: 'get', 
     colNames: ['RequestType', 'RequestFrom', 'Summary', 'Status', 'CreatedDate', 'RequestID'], 
     colModel: [ 
       { name: 'RequestType', index: 'RequestType', width: 200 }, 
       { name: 'FromName', index: 'FromName', width: 200 }, 
       { name: 'Summary', index: 'Summary', width: 350 }, 
       { name: 'RequestStatus', index: 'RequestStatus', width: 150 }, 
       { name: 'CreatedDate', index: 'CreatedDate', width: 150 },     
       { name: 'RequestID', index: 'RequestID', width: 150 } 
     ], 
     pager: $('#myPager'), 
     rowNum: 10, 
     sortname: 'CreatedDate', 
     gridview: true, 
     sortorder: 'desc', 
     loadonce: true, 
     rowList: [5, 10, 20, 50], 
     width: 1100, 
     height: 900, 
     viewrecords: true, 
     caption: 'Request Details', 
     onSelectRow: function() 
     { 

     } 
    }); 
    //var j = jQuery.noConflict(); 
    //j('.datepicker').datepicker(); 
}); 



     <table id="myGrid"></table> 
      <div id="myPager"></div> 

동작 방법 :

[HttpGet] 
public JsonResult GetRequests(string sidx, string sord, int page, int rows) 
{ 
     RequestRepository edb = new RequestRepository(); 

     int pageIndex = page; 
     int pageSize = rows; 
     int startRow = (pageIndex * pageSize) + 1; 
     RequestNavigation data = edb.RequestGetParam(page, rows, sidx, sord); 
     int totalRecords = data.totalRecords; 
     int totalPages = (int)Math.Ceiling((float)totalRecords/(float)pageSize); 
     var jsonData = new 
     { 
      total = totalPages, 
      page, 
      records = totalRecords, 
      rows = data.RequestDetails.ToArray() 
     }; 
     return Json(jsonData, JsonRequestBehavior.AllowGet); 
    } 

enter image description here

+0

안녕하세요, Chomel, 방금 내 질문을 업데이트했습니다. 제발 Noufal 위대한 참조하십시오 –

+0

. 이제 가깝습니다. 귀하의 코드에 무엇이 잘못되었는지 자세히 설명해 주시겠습니까? 저장 프로 시저를 어디에 포함 시키려고 했습니까? –

+0

으로 저장 절차가 잘 보입니다. 하지만 내가 처음으로 10 개의 레코드를로드 할 때 그 레코드가옵니다. 총 레코드는 16입니다. 다음 페이지로 이동하기 위해 페이지 2 또는 컨트롤을 볼 수 없습니다. –

답변

1

나는 해결책을 발견 하였다.

그것있는 jqGrid 속성 loadonce에서 간단한 문제 : 사실 우리가 loadonce에이 위치를 변경해야합니다 : 자바 스크립트에서

거짓

... 
gridview: true, 
sortorder: 'desc', 
loadonce: true, 
rowList: [5, 10, 20, 50], 

...

... 
gridview: true, 
sortorder: 'desc', 
loadonce: false, 
rowList: [5, 10, 20, 50], 
을이되다

...

+0

위대한 Noufal. 당신은 당신 자신의 대답을 받아 들일 수 있습니다. –