【发布时间】:2013-01-24 15:22:31
【问题描述】:
<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 行,然后当用户单击网格中的下一个按钮时,我再次点击 db 调用如果我调试方法,现在得到接下来的 20 行,我可以看到我的数据进入方法调用,但是网格转到第二页并且什么也不显示。我的意思是网格正在显示加载标志,然后即使最后一个按钮也没有任何反应,我没有得到任何数据,但在寻呼机上它显示总共 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);
【问题讨论】:
-
首先你应该修复
postData内部的JavaScript代码:你应该使用postData: { IdParam: function () { return $('#LogID').val(); } }而不是postData: { IdParam: function () return $('#LogID').val(); } -
抱歉,这是一个错字。我在通话中正确使用了它,因为几天前你帮我解决了这个问题。@Oleg
-
您的 totalPages 分配似乎过于复杂。您是否看到您的控制器尝试返回不同的数据集以响应网格页面操作?
标签: jquery html asp.net-mvc jqgrid jqgrid-asp.net