3

我需要GWT CellTable的「自定義選擇模型」。 CellTable中的一列是複選框列。GWT CellTable自定義選擇模型

基本要求(兩個解決方案都在下面工作):
- 行單擊(不在複選框上),選擇該行並取消選擇所有其他行。
- 複選框選擇應該只選擇/取消選擇該行。

以下是我正在使用的代碼,但它非常慢。任何指導將不勝感激。

final SelectionModel<T> selectionModel = new MultiSelectionModel<T>(); 
dataTable.setSelectionModel(selectionModel, 
      DefaultSelectionEventManager.createCustomManager(
       new DefaultSelectionEventManager.CheckboxEventTranslator<T>() { 
        @Override 
        public SelectAction translateSelectionEvent(CellPreviewEvent<T> event) { 
         SelectAction action = super.translateSelectionEvent(event); 
         if (action.equals(SelectAction.IGNORE)) { 
          selectionModel.clear(); 
          return SelectAction.TOGGLE; 
         } 
         return action; 
        } 
       } 
      ) 
     ); 

以下是用於CheckColumn回調的代碼。

Column<T, Boolean> checkColumn = new Column<T, Boolean>(
    new CheckboxCell(true, false)) 
     { 
      @Override 
      public Boolean getValue(T t) 
      { 
       // Get the value from the selection model. 
       return selectionModel.isSelected(t); 
      } 
     }; 

回答

3

我已經把一個KeyProvider爲CellTable其不再慢。 :)

ProvidesKey<T> keyProvider = new ProvidesKey<T>() { 
    public Object getKey(T t) { 
     return tip == null? null : tip.getId(); 
    } 
}; 
dataTable = new CellTable<T>(PAGE_SIZE, keyProvider); 
+0

你能否在2015年發佈所有工作代碼? –

+0

不幸的是,我無法再訪問這段代碼。它是專有的。 – AM01

0

你可能只是你的加入白名單複選框

int checkboxColumn = 0; 
DefaultSelectionEventManager.createCustomManager(new DefaultSelectionEventManager 
             .WhitelistEventTranslator(checkboxColumn)); 
+0

感謝您的意見。這並不能解決問題。複選框現在甚至不選擇該行,並單擊該行不起作用。 – AM01