2010-12-09 60 views
2

我正在使用Dojo 1.5(包括dojox)。我有一個dojox.grid.DataGrid其中每行代表一個用戶。當我點擊一行時,我想重定向到像/ users/USER_ID這樣的URL。用戶ID是網格中的一個字段,因此我只需在onRowClick回調中執行的操作就是獲取被點擊的行的用戶ID。dojox.grid.DataGrid:如何從點擊事件訪問數據?

click事件包含rowIndex屬性,而事實上,我發現了一個(比較舊的)張貼其他地方建議我應該能夠做到:

var row = dijit.byId('grid').model.getRow(e.rowIndex); 
/* (Then grab the 0th field of the row, which is the user ID.) */ 

(對不起,我因爲失去了URL。)

但我的網格對象沒有模型屬性。那是怎麼回事? API是否改變了? (我的網格當然是填充了數據,我可以看到,單擊,按列排序等等)。

所以我現在卡住了。請注意,順便說一句,它不會使用rowIndex來直接訪問網格的底層dojo.data.ItemFileReadStore。這是因爲網格是可排序的,所以不能保證網格的行將與商店的排序相同。

任何提示將深受讚賞。我希望這個問題是明確的,並且足夠一般,任何答案都可以幫助其他人解決我的困境。非常感謝。

回答

2

我有一個類似的情況和我搶的值是這樣的:

onRowClick: function(e) { 
    open_link(my_grid._getItemAttr(e.rowIndex, 'object_path')); 
} 

在這種情況下my_grid是數據網格的參考和object_path是我的路徑存儲到對象的列。當然,open_link是我的一個自定義函數,就像它暗示的那樣,請求一個服務器路徑。

所以,只是改變具體情況以適應你的情況,你應該沒問題。

+0

謝謝!那就是訣竅。兩個後續問題:1)你能推薦一個關於如何完成這樣的任務的高級文檔的好資源?我一直在努力尋找超出Javadoc風格文檔級別的個人API,令我感到沮喪。 dojocampus.org似乎是最好的東西,但它有點多斑點。 2)在Dojo中,調用以下劃線開頭的方法是否合法?我曾假設他們是私人API。再次感謝,-qdw – qdw 2010-12-10 06:28:33