我有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的值,它每次都会更改,但网格不会反映更改。
答案 0 :(得分:1)
你写道“每当下拉列表发生变化时我都会打电话”。我认为代码的作用存在共识。您最初在HTML页面上放置了空表<table id="gridJQ"></table>
。 loadGrid
的第一次调用会在相对复杂的潜水和表格结构中转换空表。您可以使用Developer Tools检查网格,以查看网格的外观。初始创建网格后,可以对数据进行排序,更改当前页面,更改列的宽度等。所有操作主要更改网格的 body ,而不是列标题的外部部分。
因此,您至少有两个主要选项(备选方案)来解决问题:
$("#gridJQ").jqGrid("GridUnload");
中行[{1}}之前添加var grid = $("#gridJQ");
。loadGrid
功能初始创建网格。如果您需要使用更新的loadGrid
重新加载网格数据,则应调用data1
fisrt,然后使用clearGridData
设置setGridParam
参数的新值,最后使用{ {1}}根据新的data
重新填充网格正文(不更改网格的外部部分)。您可以考虑使用$("#gridJQ").trigger("reloadGrid")
的其他data
选项,这样也可以保留网格中的当前选择。有关current: true
。第一种方式将为您提供解决问题的最简便方法。第二种方式允许从用户的角度创建最舒适的网格。