jqgrid不更新本地数据

时间:2015-08-26 07:35:46

标签: javascript jquery jqgrid

我有jqgrid,每当下拉列表更改时我都会调用它。 但问题是jqGrid只显示第一次加载的数据,之后当我用新数据集{array of objects}调用相同的函数时,它不会更新自身。以下是代码:

  function loadGrid(colModel, data1) {
  var grid = $("#gridJQ");
  grid.jqGrid({
      datatype: "local",
      viewrecords: true,
      data: data1,
      height: "auto",
      rowNum: 5,
      autowidth: false, // set 'true' here
      rownumbers: true, // show row numbers
      rownumWidth: 25,
      colModel: colModel,
      pager: "#jqGridPager",
      height: "auto",
      caption: "Load jqGrid through Javascript Array",
  }).trigger("reloadGrid");  }

我检查了col模型和data1的值,它每次都会更改,但网格不会反映更改。

1 个答案:

答案 0 :(得分:1)

你写道“每当下拉列表发生变化时我都会打电话”。我认为代码的作用存在共识。您最初在HTML页面上放置了空表<table id="gridJQ"></table>loadGrid 的第一次调用会在相对复杂的潜水和表格结构中转换空表。您可以使用Developer Tools检查网格,以查看网格的外观。初始创建网格后,可以对数据进行排序,更改当前页面,更改列的宽度等。所有操作主要更改网格的 body ,而不是列标题的外部部分。

因此,您至少有两个主要选项(备选方案)来解决问题:

  1. 你必须销毁 jqGrid并重新创建它。您应该在$("#gridJQ").jqGrid("GridUnload");中行[{1}}之前添加var grid = $("#gridJQ");
  2. 您可以继续仅使用loadGrid功能初始创建网格。如果您需要使用更新的loadGrid重新加载网格数据,则应调用data1 fisrt,然后使用clearGridData设置setGridParam参数的新值,最后使用{ {1}}根据新的data重新填充网格正文(不更改网格的外部部分)。您可以考虑使用$("#gridJQ").trigger("reloadGrid")的其他data选项,这样也可以保留网格中的当前选择。有关current: true
  3. 选项的详细信息,请参阅the answer

    第一种方式将为您提供解决问题的最简便方法。第二种方式允许从用户的角度创建最舒适的网格。