3

GWT CellTable の「カスタム選択モデル」が必要です。CellTable の列の 1 つはチェックボックス列です。

基本的な要件 (両方とも以下のソリューションで機能します):
- 行をクリックし (チェックボックスではなく)、その行を選択し、他のすべての行を選択解除します。
- チェックボックスの選択は、その行のみを選択/選択解除する必要があります。

以下は私が使用しているコードですが、非常に遅いです。任意のガイダンスをいただければ幸いです。

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 に答える