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