GWT CellTable自定义选择模型

时间:2012-05-15 16:51:44

标签: gwt gwt-2.2-celltable datagridviewcheckboxcell selectionmodel

我需要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);
            }
        };

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

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