【问题标题】:jqgrid with "local" datatype not displaying updated data when reloadGrid is triggered触发reloadGrid时,具有“本地”数据类型的jqgrid不显示更新的数据
【发布时间】:2020-04-07 16:26:58
【问题描述】:

我有一个使用 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】:

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

    我换了

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

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

    如果有人知道为什么这只以这种方式工作,而不是我最初假设的方式,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 2011-11-19
      • 1970-01-01
      • 2019-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多