Как программно добавить обработчик событий в JQGrid? - PullRequest
4 голосов
/ 14 декабря 2009

У меня есть JQGrid, который уже был инициализирован. Как я могу добавить обработчик событий к нему? Я пробовал

grid.setGridParam({
    onSelectRow: function(rowid, status) {
        alert("onSelectRow");
    }
});

, но это ничего не делает (без ошибок, но и без предупреждения).


Обновление

Оказывается, приведенный выше код на самом деле работает нормально - хотя, как указывает @jitter, новый синтаксис API предпочтителен. Моя проблема заключалась в том, что grid имел в виду не тот объект. По какой-то причине в обработчике событий gridComplete $(this) не возвращает ссылку на сетку, а $("#" + this.id) -.

// handles the gridComplete event
gridInitialized = function() {
    var grid = $("#" + this.id); 
    grid.jqGrid("setGridParam", { onSelectRow: selectRow });
};

Ответы [ 2 ]

9 голосов
/ 15 декабря 2009

Правильный способ сделать это (+ используя новый синтаксис API) заключается в следующем. Не нужно .trigger("reloadGrid")

grid.jqGrid("setGridParam", {
    onSelectRow: function(rowid, status) {
        alert("onSelectRow");
    }
});
1 голос
/ 14 декабря 2009

Просто добавьте триггер для перезагрузки сетки, например:

grid.setGridParam({
    onSelectRow: function(rowid, status) {
        alert("onSelectRow");
    }
}).trigger("reloadGrid");

Согласно документам, он должен перезагрузить сетку, но у меня не получится, если я создам сетку, и чуть позже добавлю эту функцию.

Если я помещу этот код в обработчик onclick для ссылки, он вызовет перезагрузку сетки.

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