0

このcelltableように使うと、

dgrid.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);

編集されたフィールドスペースをクリックして行を選択するので、このように使用しました

dgrid.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.BOUND_TO_SELECTION); 

しかし、この行では、シングルクリック自体で選択されます..

選択のみcheckboxが必要です。列のクリックで行を選択するべきではありません。これを達成するのを手伝ってくれる人はいますか?

4

1 に答える 1

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;
    }
};

次に、CellTable でそのセレクターを使用します。

私は持っている

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

したがって、あなたの場合は、 getDeleteColumnIndex() を getCheckoxColumnIndex() に置き換えて、列インデックスを返し (変更された場合)、クリックの代わりにスペース キーを処理します。

于 2013-10-12T12:13:09.550 に答える