如何以编程方式在JQGrid上添加事件处理程序?

时间:2009-12-14 15:17:32

标签: jquery jqgrid

我有一个已经初始化的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 个答案:

答案 0 :(得分:9)

这样做的正确方法(+使用新的API语法)就是这样。不需要.trigger("reloadGrid")

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

答案 1 :(得分:1)

只需添加触发器即可重新加载网格,如下所示:

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

根据文档的说法,它应该重新加载网格,但是如果我创建网格并不会发生这种情况,稍后会添加此功能。

如果我将此代码放在链接的onclick处理程序中,它会触发重新加载网格。