具有 "local" 数据类型的 jqgrid 在触发 reloadGrid 时不显示更新的数据
jqgrid with "local" datatype not displaying updated data when reloadGrid is triggered
我有一个使用 jqgrid 且数据类型设置为 "local" 的网络应用程序。它是这样实例化的:
var LocalDataSource = getLocalDataSource();
$("#grid").jqGrid(
{
data: LocalDataSource.Rows,
datatype: "local",
gridComplete: onGridLoaded,
(etc)
}
);
其中 getLocalDataSource()
returns 包含对象数组的对象,如下所示:
{
metadatax: "foo",
metadatay: "bar",
Rows: [
{
strValue: "baz1"
},
{
strValue: "baz2"
}
]
}
当 table 首次加载时,一切都按预期工作。但是,然后我调用以下函数:
function mutateLocalDataSource(){
LocalDataSource.Rows[0].strValue = "qux";
$('#grid').trigger("reloadGrid");
}
此时,我知道jqgrid正在刷新(因为onGridLoaded正在被调用),但是网格中显示的数据永远不会用"qux"更新。当我触发 reloadGrid 时,为什么网格不从 LocalDataSource 重新加载它的数据?
我在查找有关 jqgrid 的文档时遇到了问题,但看起来当您的数据类型设置为本地时,reloadGrid 触发器不会重新引用数据,除非您首先触发其他几个方法。具体来说,以下代码对我有用:
我换了
$('#grid').trigger("reloadGrid");
和
$('#grid')
.jqGrid('clearGridData')
.jqGrid('setGridParam',
{
data: LocalDataSource.Rows
})
.trigger("reloadGrid");
如果有人知道为什么这只能以这种方式工作,而不是我最初假设的方式,请告诉我。
我有一个使用 jqgrid 且数据类型设置为 "local" 的网络应用程序。它是这样实例化的:
var LocalDataSource = getLocalDataSource();
$("#grid").jqGrid(
{
data: LocalDataSource.Rows,
datatype: "local",
gridComplete: onGridLoaded,
(etc)
}
);
其中 getLocalDataSource()
returns 包含对象数组的对象,如下所示:
{
metadatax: "foo",
metadatay: "bar",
Rows: [
{
strValue: "baz1"
},
{
strValue: "baz2"
}
]
}
当 table 首次加载时,一切都按预期工作。但是,然后我调用以下函数:
function mutateLocalDataSource(){
LocalDataSource.Rows[0].strValue = "qux";
$('#grid').trigger("reloadGrid");
}
此时,我知道jqgrid正在刷新(因为onGridLoaded正在被调用),但是网格中显示的数据永远不会用"qux"更新。当我触发 reloadGrid 时,为什么网格不从 LocalDataSource 重新加载它的数据?
我在查找有关 jqgrid 的文档时遇到了问题,但看起来当您的数据类型设置为本地时,reloadGrid 触发器不会重新引用数据,除非您首先触发其他几个方法。具体来说,以下代码对我有用:
我换了
$('#grid').trigger("reloadGrid");
和
$('#grid')
.jqGrid('clearGridData')
.jqGrid('setGridParam',
{
data: LocalDataSource.Rows
})
.trigger("reloadGrid");
如果有人知道为什么这只能以这种方式工作,而不是我最初假设的方式,请告诉我。