I have a GWT 2.4 DataGrid associated with a SingleSelectionModel. One of the columns in the grid is a CheckboxCell, but it is not used for selection, but to set a boolean field value for the underlying item type of the row. My problem is that when I click on the checkbox, the row is selected first, then I have to click a second time to set/unset the checkbox. I would prefer that clicking outside of the checkbox does row selection, while clicking inside of the checkbox only sets/unsets the checkbox. Can anyone point me in the right direction on how to do this. I keep coming back to onBrowserEvent, but I'm not sure what to try.
Asked
Active
Viewed 4,668 times
2 Answers
6
There's a couple of approaches you can do, depending on what exactly you want to do it. Here are the two ideas that come to mind:
- Use a DefaultSelectionEventManager.CheckboxEventTranslator to blacklist the column
- Intercept it on a cell by cell basis with CellPreviewEvent.Handler and handle it on the DOM level by checking the EventTarget (
"click".equals(event.getType())
) and then useevent.stopPropogation()
when the EventTarget is of an input type "checkbox"

Lam Chau
- 842
- 5
- 14
-
1Reading the documentation, it seems like SelectionEventManager has all the tools I need to handle this and other issues I'm having. Cheers! – Steve J Nov 05 '11 at 14:40
0
This code solved in my case a problemn very similar to yours.
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);
}
};

Raduan Santos
- 1,023
- 1
- 21
- 45