开发者

How to programatically add an event handler on a JQGrid?

开发者 https://www.devze.com 2022-12-14 03:35 出处:网络
I have a JQGrid that\'s already been initialized. How c开发者_如何学运维an I add an event handler to it? I\'ve tried

I have a JQGrid that's already been initialized. How c开发者_如何学运维an I add an event handler to it? I've tried

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

but this doesn't do anything (no error, but no alert on select either).


Update

Turns out the code above actually works fine - although as @jitter points out the new API syntax is preferred. My problem was that grid was referring to the wrong object. For some reason in the gridComplete event handler, $(this) does not return a reference to the grid, but $("#" + this.id) does.

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


The correct way to do this (+ using the new API syntax) is this. Doesn't need a .trigger("reloadGrid")

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


Just add a trigger to reload the grid, like this:

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

According to the doc's, it should reload the grid, but it doesn't' happen for me if I create the grid, and a bit later add this function.

If I put this code in an onclick handler for a link, it does trigger a reload of the grid.

0

精彩评论

暂无评论...
验证码 换一张
取 消