0

Ext.grid.GridPanel を使用してストアからアイテムを入力しています。すべてが順調に進んでいますが、問題が 1 つあります。

ctrlグリッド行で + マウス クリックを押すと、行の選択が解除されます。どうすればこのアクションを防ぐことができますか?

マウスクリックイベントとキーダウンイベントで関数を書いてみました

this.grid.onClick = function(event){
            if (event.ctrlKey === true){
                event.preventDefault();
                event.stopPropagation();
            }
        };

return false;代わりに書いてみましevent.preventDefault(); event.stopPropagation();たが、運がありませんでした。

助言がありますか?

4

1 に答える 1

0

1 つの回避策が見つかりました。

RowSelectionModel.js にはカスタム関数がありますhandleMouseDown

handleMouseDown : function(g, rowIndex, e){
    if(e.button !== 0 || this.isLocked()){
        return;
    }
    var view = this.grid.getView();
    if(e.shiftKey && !this.singleSelect && this.last !== false){
        var last = this.last;
        this.selectRange(last, rowIndex, e.ctrlKey);
        this.last = last; // reset the last
        view.focusRow(rowIndex);
    }else{
        var isSelected = this.isSelected(rowIndex);
        if(e.ctrlKey && isSelected){
            this.deselectRow(rowIndex);
        }else if(!isSelected || this.getCount() > 1){
            this.selectRow(rowIndex, e.ctrlKey || e.shiftKey);
            view.focusRow(rowIndex);
        }
    }
},

線があります

if(e.ctrlKey && isSelected){
  this.deselectRow(rowIndex);
}

したがって、この関数をオーバーライドして、上記の if にいくつかのカスタム アクションを追加する必要がありました。

于 2013-05-02T11:41:50.557 に答える