刷新数据后如何重置jqgrid

时间:2014-04-30 06:16:52

标签: jquery ajax jqgrid

我正在用这个脚本刷新jqgrid:

$('#btnRefresh').click(function () {
   $.ajax({
      type : "GET",
      url: "${pageContext.request.contextPath}/General/ProvinceLoadGrid.json",
      success: function (data) {
           if (data != null) {
               jQuery('#dataTable').jqGrid('clearGridData')
                     .jqGrid('setGridParam', {data: data, page: 1})
                     .trigger('reloadGrid');
           }
      }
   });
)};

我已经配置了jqgrid,以便在浏览页面后保存选定的行。 此脚本触发重新加载网格以重新加载数据,但这会产生问题。 问题是当我在页面1中选择第一行时(每个页面有10条记录时) 第二页上的第一条记录(第11条记录)也被选中。也选择了第3页的记录(第21记录)等... 所有这些都发生在reloadGrid之后。 jqgrid正确地在每个页面上保存我的选择,但在重新加载网格后会出现此问题。

我如何设法解决这个问题?

3 个答案:

答案 0 :(得分:4)

试试这个:

if (data != null) {
 jQuery('#dataTable').jqGrid('clearGridData')
 jQuery('#dataTable').jqGrid('setGridParam', {data: data, page: 1})
 jQuery('#dataTable').trigger('reloadGrid');
}

答案 1 :(得分:1)

我修好了! 问题是在重新加载网格后数据类型重置为其默认值,我们需要再次将其设置回json或xml!

$('#btnRefresh').click(function () {
   $.ajax({
      type : "GET",
      url: "${pageContext.request.contextPath}/General/ProvinceLoadGrid.json",
      success: function (data) {
           if (data != null) {
               jQuery('#dataTable').jqGrid('clearGridData')
                     .jqGrid('setGridParam', {data: data, datatype: 'json'})
                     .trigger('reloadGrid');
           }
      }
   });
)};

答案 2 :(得分:0)

为了避免所有问题,我这样做

  

Html - 将jQgrid表包含在div

<div id="tableDivID">
  <table id="tableID"></table>
  <div id="tablePagerID"></div>
</div>
  

Jquery - 激活jQgrid的函数

function activatejQGrid(data)
{

$("tableID").jQGrid({
//code for jQgrid initilise with *data*
}}

}

重新初始化jQgrid

$("#tableDivID").replaceWith(function () {
  return "<div id='tableDivID'><table id='tableID'></table><div id='tablePagerID'></div>
</div>";
  });
activatejQGrid(data);