2016-06-06 9 views
1

Zunächst einmal neu zu ASP.NET MVC.Wie Sortieren/Paging in jqgrid in ASP.net MVC

Ich möchte benutzerdefinierte Sortierung und Paging in JqGrid mit einer gespeicherten Prozedur tun. Parameter für die gespeicherte Prozedur sind StartIndex, PageSize, SortExpression.

Wie kann ich die aktuellen Seitendetails und Sortierdetails erhalten und wie ich meine Aktionsmethode für jede Navigation unter jqgrid aufrufen kann?

Soweit ich weiß, ist die Seite der gespeicherten Prozedur in Ordnung. Aber wenn ich das erste Mal lade, werden 10 Datensätze abgerufen. Die Gesamtanzahl der Datensätze ist 16. Ich kann jedoch die Seite 2 oder das Steuerelement für die Navigation zur erwarteten nächsten Seite nicht sehen.

$(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> 

Aktionsmethode:

[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

Hallo Chomel, ich habe gerade meine Frage aktualisiert. Bitte sehen Sie –

+0

Great Noufal. Wir sind jetzt nah dran. Könnten Sie detailliert angeben, was mit Ihrem Code nicht stimmt? Wo haben Sie versucht, das gespeicherte Verfahren einzubeziehen? –

+0

, wie ich sehen kann, ist die Seite der Geschäftsprozedur in Ordnung. aber wenn ich das erste mal 10 lade, wird es kommen. Der Gesamtdatensatz ist 16. Ich kann die Seite 2 oder die Steuerung für die Navigation zur nächsten Seite nicht sehen. –

Antwort

1

fand ich die Lösung.

Es ist ein einfaches Problem in jqGrid Eigenschaft loadonce: true Wir haben dies zu loadonce ändern: false

im javascript:

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

...

Wird

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

...

+0

Großer Noufal. Sie können Ihre eigene Antwort akzeptieren. –