0

In celltable when I use like this,

dgrid.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);

Edited fields space click selecting the row, so I used like this

dgrid.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.BOUND_TO_SELECTION); 

But in this row gets selected on single click itself..

I want only checkbox for selection, column click should not select the row, Can anyone help me in achieving this?

Hybrid Developer
  • 2,320
  • 1
  • 34
  • 55
Ayyanar G
  • 1,545
  • 1
  • 11
  • 24

1 Answers1

0
    protected DefaultSelectionEventManager.EventTranslator<ProductProxy> eventTranslator = new DefaultSelectionEventManager.EventTranslator<ProductProxy>() {

    @Override
    public boolean clearCurrentSelection(CellPreviewEvent<ProductProxy> event) {
        NativeEvent nativeEvent = event.getNativeEvent();
        String type = nativeEvent.getType();
        if (BrowserEvents.CLICK.equals(type)) {
            int index = event.getContext().getColumn();
            if (index == getDeleteColumnIndex())
                return true;
        }

        return false;
    }

    @Override
    public SelectAction translateSelectionEvent(CellPreviewEvent<ProductProxy> event) {
        NativeEvent nativeEvent = event.getNativeEvent();
        String type = nativeEvent.getType();
        if (BrowserEvents.CLICK.equals(type)) {
            if (event.getColumn() == getDeleteColumnIndex()) {
                ProductTable.this.productTableManager.deleteProduct(event.getValue());
                return SelectAction.IGNORE;
            }
        }
        return SelectAction.DEFAULT;
    }
};

Then use that selector in your CellTable:

I have

class MyTable extends CellTable {
    void myInit() {
      setSelectionModel(selectionModel, DefaultSelectionEventManager.createCustomManager(eventTranslator));
}}

So for your case, just replace getDeleteColumnIndex() by getCheckoxColumnIndex() and return your column index (if it changes), and handle the space key instead of the click

Zied Hamdi
  • 2,400
  • 1
  • 25
  • 40