1
的狀態我有CellTable與連接到它MultipleSelectionModel。在對數據進行一些修改後,表必須刷新,並且新數據必須從服務器重新加載。GWT - 記住複選框後RangeChangeEvent發送到表
但是我需要更新複選框狀態爲新加載的數據。所以我能夠使用selectionModel.getSelectedSet()查詢選擇框 - 但現在我需要在表中查找這些對象並「檢查」它們。
由於對象中的變化和因爲它們被用作鍵在地圖內部在GWT組件 - 我被迫寫「包裝」過僅使用ID在等號/的hashCode這些對象的內容。
所以基本上我救selectedSet點火事件之前,然後遍歷並調用的setSelected方法:
Set<T> selectedSet = selectionModel.getSelectedSet();
RangeChangeEvent.fire(table,...)
if (selectedSet != null)
for (T obj : selectedSet) {
selectionModel.setSelected(obj,true);
}
}
有沒有更好的方法嗎?
這是否意味着我不必重寫equals /的hashCode在我的課,但只是表的內容被更新後通過「選擇」的對象? – jdevelop
絕對如此。默認情況下,選擇模型使用['SimpleKeyProvider'](http://google-web-toolkit.googlecode.com/svn/javadoc/latest/com/google/gwt/view/client/SimpleKeyProvider.html),它使用以自己爲關鍵;這意味着'equals'和'hashCode'將被用在對象本身上。使用一個提供對象ID的'ProvideKey',將在ID上使用'equals'和'hashCode',而不是你的對象。你不應該有什麼特別的事情要做。在檢索更新後的數據之後的選擇模型,在單元格表上簡單地設置'setRowData'即可完成:選擇模型將僅存儲ID –