Перезагрузить jQgrid при закрытии Bootbox - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть jQGrid v4.6.0 (я могу воспроизвести ту же проблему с Free jqGrid ) на своей странице, которую я могу перезагрузить, используя:

$('#jqGrid').trigger('reloadGrid');

Он загружает данные, отправляя сообщения всервер.Он отправляет сообщения правильно, возвращает возвращенные данные и показывает правильные данные в сетке.

На той же странице у меня есть ссылка, которая открывает диалоговое окно Bootbox.Вызов reloadGrid из обратного вызова Bootbox, похоже, делает $ ('# jqGrid'). JqGrid "не функция"

bootBoxWindow = bootbox.dialog({
    title: "title",
    message: "foo",
    size: "large",
    closeButton: false,

    buttons: {
        ok: {
            label: "Save 2",
            className: "btn-success",
            callback: function () {
                $('#jqGrid').trigger('reloadGrid');

            }
        }
    }
});

Когда это вызывает reloadGrid, jqGrid правильно отправляет сообщения на мой сервер и получает последние данные.Однако внутри события loadComplete я больше не могу ссылаться на jQuery ("# ​​jqGrid"). JqGrid.

Пример:

jQuery("#jqGrid").jqGrid('showCol', 3);

... вызов этого внутри loadComplete приводит к ошибке: TypeError: jQuery ("# ​​jqGrid"). jqGrid не является функцией "

Я получаю ту же ошибку при использовании $ (this) вместо jQuery (" # jqGrid ").

Я не могувоспроизведите проблему без Bootbox. Если я загружаю сетку, используйте следующее:

setTimeout(function () {
    $('#jqGrid').trigger('reloadGrid', [{ current: true }]);
}, 10000);

... ошибки нет.

1 Ответ

0 голосов
/ 28 февраля 2019

Первое, что я думаю, это то, что модальная функция находится за пределами области действия jqGrid.Пример:

(function($) { 
    $(function() {
        ....
        var $grid = $("#grid").jqGrid({...});
        .....
        console.log($grid);
    });
})(jQuery);

console.log($grid);

Первый файл console.log будет выводить объект сетки, второй вызовет ошибку.

Возможно, вы захотите посмотреть эту статью

...