【问题标题】:GWT CellList Click to Toggle selection (Multi-Selection)GWT CellList 点击切换选择(多选)
【发布时间】:2011-10-26 14:05:05
【问题描述】:

我想设置一个 CellList,以便单击一行将切换选择。这样就可以选择多行而无需按住 ctrl 键。

我需要进行哪些更改才能使其正常工作?

class ToggleEventTranslator<T> implements DefaultSelectionEventManager.EventTranslator<T> {
    @Override
    public boolean clearCurrentSelection(final CellPreviewEvent<T> event) {
        return false;
    }

    @Override
    public SelectAction translateSelectionEvent(final CellPreviewEvent<T> event) {
        return SelectAction.TOGGLE;
    }

}


MultiSelectionModel<ObjProxy> multiSelectionModel = new MultiSelectionModel<ObjProxy>();

    ocjCellList.setSelectionModel(multiSelectionModel, DefaultSelectionEventManager
            .<ObjProxy> createCustomManager(new ToggleEventTranslator<ObjProxy>()));

【问题讨论】:

    标签: gwt multi-select gwt-2.2-celltable gwt-2.4


    【解决方案1】:
    list.addCellPreviewHandler(new Handler<T>() {
    
            @Override
            public void onCellPreview(final CellPreviewEvent<T> event) {
    
                if (BrowserEvents.CLICK.equals(event.getNativeEvent().getType())) {
    
                    final T value = event.getValue();
                    final Boolean state = !event.getDisplay().getSelectionModel().isSelected(value);
                    event.getDisplay().getSelectionModel().setSelected(value, state);
                    event.setCanceled(true);
                }
            }
    });
    
    
    private final MultiSelectionModel<T> selectModel = new MultiSelectionModel<T>();
    
    final Handler<T> selectionEventManager = DefaultSelectionEventManager.createCheckboxManager();
    list.setSelectionModel(selectModel, selectionEventManager);
    

    【讨论】:

    • 'selectModel' 定义是什么样的?
    • 我已经用 CellList 尝试过这段代码,但它不能选择多个项目。还有更多的实现吗?
    • 很好,使用这个选择模型应该可以选择多个项目。 private final MultiSelectionModel selectModel = new MultiSelectionModel();
    【解决方案2】:

    “无论是否添加复选框列,都必须add a cell preview handler。定义一个最简单的方法是使用DefaultSelectionEventManager,或者将checkbox manager 与复选框列结合使用,或者@ 987654324@(您可以将点击事件映射到toggle action)。

    您可以在GWT Showcase 中看到它使用的复选框变体;它使用带有两个参数的setSelectionModel 重载来同时添加CellPreviewEvent.Handler。”

    (归功于this answer

    【讨论】:

    • 感谢您的帖子。它如何应用于 CellList?使用 CellTable 实现 Toggle-on-click 行为很简单,但我无法让它与 CellList 一起使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 2019-07-15
    • 1970-01-01
    • 2018-10-16
    相关资源
    最近更新 更多