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“无论是否添加复选框列,都必须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 for循环li 怎么做多选,点击只是切换子集的class,不影响其他li
如何使用 Selenium-Python 从多选列表中选择多个选项?
javascript中radio框触发事件弹出多个多选框,我修改多选框。点击另外一个radio时保存那些之前勾选的数据