GWT CellList 点击切换选择(多选)

Posted

技术标签:

【中文标题】GWT CellList 点击切换选择(多选)【英文标题】:GWT CellList Click to Toggle selection (Multi-Selection) 【发布时间】: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>()));

【问题讨论】:

【参考方案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 一起使用。

以上是关于GWT CellList 点击切换选择(多选)的主要内容,如果未能解决你的问题,请参考以下文章

Vue实现多选、单选的样式切换

vue for循环li 怎么做多选,点击只是切换子集的class,不影响其他li

如何使用 Selenium-Python 从多选列表中选择多个选项?

javascript中radio框触发事件弹出多个多选框,我修改多选框。点击另外一个radio时保存那些之前勾选的数据

form的编辑与展示的切换(输入框,单选多选框,上传图片,颜色选择器)适用个人信息的展示与修改

form的编辑与展示的切换(输入框,单选多选框,上传图片,颜色选择器)适用个人信息的展示与修改