<script type="text/javascript">
$(document).ready(function () {
var firstClick = true;
$('.editor-date > input').datepicker();
$('.getdata').click(function () {
if (!firstClick) {
$("#GridTable").trigger("reloadGrid");
}
else
{
firstClick = false;
$('#GridTable').jqGrid({
url: '<%= Url.Action("GetData", "Report") %>',
datatype: 'json',
mtype: 'POST',
colNames: ['Log ID'],
colModel: [{ name: 'LogID', index: 'MessageLogID', key: true, formatter: pointercursor }],
multiselect: true,
sortname: 'LogID',
sortorder: "asc",
viewrecords: true,
pager: '#pager',
rowNum: 20,
rowList: [5, 10, 20, 50],
postData: {
IdParam: function ()
{ return $('#LogID').val(); }
},
jsonReader: {
repeatitems: false,
id: 'LogID',
records: 'TotalRecords',
total: 'TotalPages',
page: 'CurrentPage',
root: 'Rows'
},
loadError: function (xhr, status, error) {
messageBox('Error', 'Error occurred loading data.');
},
height: 'auto',
width: 'auto'
});
});
}
Report Controller Method
public ActionResult GetData(string sidx, string sord, int page, int rows, int IdParam){}
データベースから必要なデータのみをロードしようとしています...そのため、最初のページが表示されると、db から 20 行が取得されますメソッドをデバッグすると、メソッド呼び出しにデータが入ってくるのがわかりますが、グリッドは 2 ページ目に移動し、何も表示されません。つまり、グリッドに読み込みサインが表示され、最後のボタンでも何も起こらず、データは取得されませんが、ページャーでは合計 100 ページが表示され、次に進むことができますが、ページ番号のみです。増分 グリッドに表示されるデータがありません..助けをいただければ幸いです... Onpaging イベントについて読み込もうとしましたが、このシナリオでそれを実装する方法を理解できませんでした..
簡単な観察: データを取得して最初のページに表示する行数を 20 から 5 10 または 50 に変更すると、次のページが表示されないだけです...
コントローラーの方法:
int pageSize = rows;
int pageIndex = page - 1;
int totalPages = 0;
//call to the db using Entity FrameWork..
var Log = SERVICE.GetData_sp(IdParam,sidx,sord,page,rows,total).ToList()
var totalCount = Convert.ToInt32(total.Value); //converting because I am getting it as Output parameter from the Store-Proc in objet.parameter type.
totalPages = (int)Math.Ceiling(totalCount / (float)pageSize);
JqGridData gridData = new JqGridData { CurrentPage = page, TotalPages = totalPages, TotalRecords = totalCount };//getting the correct values as I cross checked it by just exec the store-proc.
//storing data in gridData obj from Log.
return Json(gridData);