jqgrid重新加载网格部分工作

时间:2010-07-27 22:30:52

标签: jquery jqgrid

我有一个客户端管理的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");

我认为问题不在于导航栏,因为我可以清楚地点击下一页并查看添加行。

由于

3 个答案:

答案 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语句没有条件。 (请原谅我的错误,我不会说英语)