3

我需要 GWT CellTable 的“自定义选择模型”。CellTable 中的一列是 Checkbox 列。

基本要求(都在下面的解决方案中工作):
- 行单击(不在复选框上),选择该行并取消选择所有其他行。
- 复选框选择应该只选择/取消选择该行。

以下是我正在使用的代码,但它非常非常慢。任何指导将不胜感激。

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);
            }
        };
4

2 回答 2

3

我已经为 CellTable 添加了一个 KeyProvider,它不再慢了。:)

ProvidesKey<T> keyProvider = new ProvidesKey<T>() {
    public Object getKey(T t) {
        return tip == null? null : tip.getId();
    }
};
dataTable = new CellTable<T>(PAGE_SIZE, keyProvider);
于 2012-05-18T15:00:24.390 回答
0

您可以将您的复选框列入白名单

int checkboxColumn = 0;
DefaultSelectionEventManager.createCustomManager(new DefaultSelectionEventManager
                                      .WhitelistEventTranslator(checkboxColumn));
于 2012-05-16T02:23:37.513 回答