2009-12-14 105 views
4

我有一個已經被初始化的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 }); 
}; 
+0

對我的答案有何反饋?它不是做你想要的嗎? – jitter 2009-12-16 14:14:17

+0

爲什麼'$(this)'和'$(「#」+ this.id)'有不同的想法?有沒有更好的,「標準」的方法來獲取gridComplete事件中的網格引用? – 2009-12-16 14:50:06

回答

9

正確的方法來做到這一點(+使用新的API語法)是這樣的。不需要.trigger("reloadGrid")

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

感謝您指出改進的語法 - 事實證明,我上面的代碼很好,但我使用的'grid'變量指的是錯誤的東西。 – 2009-12-16 14:40:04

1

只需添加一個觸發重新加載網格,像這樣:

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

按照文檔的,它應該重新加載網格,但如果我創造它不會」發生,我網格,稍後添加此功能。

如果我把這個代碼在一個onclick處理程序中的鏈接,它會引發電網的重載。

+0

感謝 - 它看起來像「觸發器(」reloadGrid「)」實際上是沒有必要的 - 看到我上面的更新。另外,如果你把它放在'gridComplete'處理程序中 - 這是我在做這件事的地方 - 它會將你送入無限循環。 – 2009-12-16 14:47:58

相關問題