5

グリッド内のいくつかの行を選択する機能を削除する必要があります。

私はCheckboxModelを使用しています

selModel: Ext.create( 'Ext.selection.CheckboxModel', {
    mode: 'SIMPLE'
} )

選択を無効にするには beforeselect イベントを使用します

beforeselect: function ( row, model, index ) {
    if ( model.data.id == '3' ) {
        return false;
    }
}

チェックボックスを非表示にするには、行とCSSルールに特定のクラスを使用します

viewConfig: {
    getRowClass: function( record, index ) {
        var id = record.get('id');
        return id == '3' ? 'general-rule' : '';
    }
}

.general-rule .x-grid-row-checker {
    left: -9999px !important;
    position: relative;
}

おそらく、これは望ましい結果を達成するための最良の方法ではありませんが、私の仕事ではうまくいきます。

ただし、別の問題が発生します。グリッド ヘッダーの [すべて選択] または [すべて選択解除] チェックボックスが機能しなくなります。この ckechbox を最初にクリックすると、選択されるべきではない行を除くすべての行が選択されますが、もう一度クリックしても何も起こりません。明らかに、選択されていない行があるため、システムはすべての行を再選択しようとします。

問題を解決するためのより良い方法はありますか? または、この方法で問題を解決する方法。

頭に浮かぶ唯一のこと-チェックボックスのすべて選択/すべて選択解除機能を書き直す必要がありますが、どうすればそれができるかわかりません。

ご回答ありがとうございます。私の質問がルールに従っていない場合はお詫び申し上げます。

4

2 に答える 2

1

現在、そのような機能を可能にするフックは組み込まれていません。ヘッダーのチェックボックスはselectAlldeselectAllを呼び出すため、これらのメソッドをオーバーライドして、レコードごとにそれを防ぐ必要があります。

于 2013-08-09T08:50:25.217 に答える