复选框单元格和可选单元格表行
问题描述:
我有一个与SingleSelectionModel关联的GWT 2.4 DataGrid。网格中的一列是CheckboxCell,但不用于选择,而是为行的基础项目类型设置布尔字段值。我的问题是,当我点击复选框时,首先选中该行,然后我必须再次单击以设置/取消选中该复选框。我希望单击外部的的复选框没有行选择,而点击内部的复选框只会设置/取消选中该复选框。任何人都可以指导我如何做到这一点的正确方向。我不断回到onBrowserEvent,但我不确定要尝试什么。复选框单元格和可选单元格表行
答
有几种方法可以做,具体取决于你想要做什么。这里有两个想法浮现在脑海:
- 使用DefaultSelectionEventManager.CheckboxEventTranslator黑名单列
- 拦截它通过小区的基础上使细胞与CellPreviewEvent.Handler并通过检查事件目标处理它在DOM级别(
"click".equals(event.getType())
)然后在EventTarget为输入类型“复选框”时使用event.stopPropogation()
答
此代码在我的情况下解决了与您非常相似的问题。
Column<SomeBean, Boolean> checkboxColumn= new Column<SomeBean, Boolean>(new CheckboxCell(true,false))
{
@Override
public Boolean getValue(SomeBean object)
{
if(object == null || object.getId() == null)
return null;
return selectionModel.isSelected(object);
}
};
我会在星期一当我回来工作时试试这个。谢谢。 –
阅读文档,似乎SelectionEventManager拥有我需要的所有工具来处理这个以及我遇到的其他问题。干杯! –