具有“本地”数据类型的jqgrid,在触发reloadGrid时不显示更新的数据

问题描述 投票:0回答:1

我有一个使用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重新加载它的数据?

javascript jquery jqgrid
1个回答
0
投票

我在查找有关jqgrid的文档时遇到了麻烦,但是当您将数据类型设置为本地时,除非您先触发其他两种方法,否则reloadGrid触发器不会重新引用数据。具体来说,以下代码对我有用:

我已替换

$('#grid').trigger("reloadGrid");

with

$('#grid')
.jqGrid('clearGridData')
.jqGrid('setGridParam',
    {
        data: LocalDataSource.Rows
    })
.trigger("reloadGrid");

[如果有人知道为什么这样只能如此,而不是我最初假设的方式,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.