jqgrid с «локальным» типом данных не отображает обновленные данные при запуске reloadGrid - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть веб-приложение, которое использует jqgrid с типом данных "local". Он создается следующим образом:

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 ». Почему сетка не перезагружает свои данные из LocalDataSource, когда я запускаю reloadGrid?

1 Ответ

0 голосов
/ 07 апреля 2020

У меня были проблемы с поиском документации по jqgrid, но, похоже, когда ваш тип данных установлен как локальный, триггер reloadGrid не ссылается на данные повторно, если вы сначала не вызовете пару других методов. В частности, следующий код работал для меня:

Я заменил

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

на

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

Если кто-нибудь знает, почему это работает только так, а не так Я изначально предполагал, пожалуйста, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...