我有一个使用jqgrid并将其数据类型设置为“本地”的webapp。实例化如下:
var LocalDataSource = getLocalDataSource();
$("#grid").jqGrid(
{
data: LocalDataSource.Rows,
datatype: "local",
gridComplete: onGridLoaded,
(etc)
}
);
其中getLocalDataSource()
返回包含对象数组的对象,如下所示:
{
metadatax: "foo",
metadatay: "bar",
Rows: [
{
strValue: "baz1"
},
{
strValue: "baz2"
}
]
}
当表第一次加载时,一切都按预期工作。但是,然后我调用以下函数:
function mutateLocalDataSource(){
LocalDataSource.Rows[0].strValue = "qux";
$('#grid').trigger("reloadGrid");
}
至此,我知道jqgrid正在刷新(因为正在调用onGridLoaded),但是网格中显示的数据永远不会使用“ qux”进行更新。当我触发reloadGrid时,为什么网格不从LocalDataSource重新加载它的数据?
我在查找有关jqgrid的文档时遇到了麻烦,但是当您将数据类型设置为本地时,除非您先触发其他两种方法,否则reloadGrid触发器不会重新引用数据。具体来说,以下代码对我有用:
我已替换
$('#grid').trigger("reloadGrid");
with
$('#grid')
.jqGrid('clearGridData')
.jqGrid('setGridParam',
{
data: LocalDataSource.Rows
})
.trigger("reloadGrid");
[如果有人知道为什么这样只能如此,而不是我最初假设的方式,请告诉我。