我有一个客户端管理的jqgrid,当我触发一些外部事件时我会重新加载。 当我用更多的数据重新加载网格时,一切都很好,但是当我用较少的数据重新加载它时,行数是不正确的。
例如,当网格中当前有100行并且我用200重新加载时,导航栏会显示200条记录。如果其中有200行并且我用25行刷新它,它仍然在导航栏中显示200而不是25.刷新网格的代码如下所示:
$("#list2").trigger("GridUnload");
$.ajax({
url: 'http://xxx,
dataType: 'json',
async: false,
success: function(data) {
gridData = data;
}
});
$("#list2").setGridParam({ data: gridData });
$("#list2").trigger("reloadGrid");
我认为问题不在于导航栏,因为我可以清楚地点击下一页并查看添加行。
由于
答案 0 :(得分:4)
尝试替换
$("#list2")[0].refreshIndex();
$("#list2").trigger("reloadGrid");
与
var g = $("#list2");
g.setGridParam({ data: gridData });
g[0].refreshIndex();
g.trigger("reloadGrid");
请参阅http://www.trirand.com/blog/?page_id=393/help/losing-edited-cell-data-after-paging/和http://www.trirand.com/blog/?page_id=393/bugs/data-parameter-are-not-modified-during-inline-editing/了解详情。
一般情况下,您应该使用url
方法更好地设置setGridParam
参数,或者只使用带有函数的postData
(有关详细信息,请参阅How to filter the jqGrid data NOT using the built in search/filter box)
答案 1 :(得分:3)
我使用此代码解决了这个问题,但在我的情况下,问题有点不同,新添加的行未在JQGrid中显示。因此,此代码获取Grid的更新数据,然后将其保存在本地对象中,然后将此本地对象重新分配给网格并重新加载网格到第1页。
var grid_data = $("#Grid_ID").jqGrid('getGridParam', 'data');
$("#Grid_ID").jqGrid('clearGridData').jqGrid('setGridParam', {
datatype: 'local',
data: grid_data,
rowNum: grid_data.length
}).trigger('reloadGrid', [{ page: 1}]);
答案 2 :(得分:0)
同样的事发生在我身上。 我的问题出在返回数据的PHP文件中。 您应该验证计数记录的查询条件是否等于用于获取记录的条件。 可能用于计算记录的SQL语句没有条件。 (请原谅我的错误,我不会说英语)