2012-05-22 46 views
0

我已經能夠讓DataGrid做我想要的東西,除了一件事情。我試圖將onRowClick事件綁定到一個常規的JavaScript函數,它會做某些事情。我正在使用Dojo 1.7.2,因此connect(對象,事件,方法)不起作用。我嘗試使用新的(對象,事件...)無濟於事。我究竟做錯了什麼?綁定onRowClick到一個DoJo數據網格(dojox.grid.DataGrid)

在標籤之間但低於changeValue()[函數我寫和已知的工作]和dojo.require ...換句話說,在塊的最後一件事。我知道on方法的語法有問題,但無法弄清楚什麼。

var ngrid = dijit.byId('grid'); 
dojo.on(ngrid,"onRowClick",changeValue()); 

回答

2

修復您的代碼;因爲我相信你會要綁定的功能是實際changeValue,而不是它可能會返回,試試這個

dijit.byId('grid').connect("onRowClick", changeValue) 

。上使得一些神奇的前綴* *一些與.connect所以嘗試代替。最佳做法是通過對象本身註冊偵聽器,以便在網格被破壞時它會斷開連接。上面將調用作爲網格對象的擴展,因此您不應將網格引用作爲第一個參數傳遞。

0

與@ mschr的答案類似,這裏也是如何獲取與點擊行相關的數據。

dojo.connect(grid, "onRowClick", function(e) { 
    var dataItem = grid.selection.getSelected(); 
    // call you change method here with dataItem 
}); 

和示例

http://jsfiddle.net/cswing/T27hv/

+0

的一部分.connect(「onRowClick」,changeValue)',在changeValue函數中使用'this.selection ..' – mschr

0

分配jsid ="mygrid"屬性的DataGrid中。 通過你的jsid在dojo連接你不必做dijit.byId()

dojo.connect(mygrid, "onRowClick", changeValue); 
1

這與on方法正確的語法

你要刪除「上」與'dijit.byId(「網格」)事件的名稱字符串

var ngrid = dijit.byId('grid'); 
dojo.on(ngrid,"rowClick",changeValue());