0

ページングツールバーを使用しているときに、 CheckboxModelがページ変更時に選択されたすべての行を選択解除するのはなぜですか? ページ変更時に行の選択解除を停止するにはどうすればよいですか?

ノードのプルーニングを防ぐために使用できる pruneRemoved があることがわかります。それを false に設定しましたが、選択解除はまだ発生しています。他に何を試すべきかわからない。

チェックボックスモデルがストアに登録されるか、ストアが変更されたときに通知されるように pagingtoolbar を想定しています...その後、すべての選択を解除しますか? なんで?私はそれを防ぐ必要があります。

編集: deselectAll を発生させたくない理由は次のとおりです。選択時と選択解除時にハンドラーをアタッチします。選択すると行が別のグリッドに追加され、選択を解除すると行が削除されます。したがって、ユーザーがチェックボックスをオンにすると、行が別のグリッドに追加され、チェックを外すと、そのグリッドから削除されます。グリッドが deselectAll を起動すると、ストアが変更されると、他のグリッドに保存されているすべての行が失われます。

4

1 に答える 1

0

これが正しい方法かどうかはわかりませんが、私にとってはうまくいっています。

私がしたことは、独自の Ext.grid.View を作成することでした。ext.view.Table を拡張し、onMaskBeforeShow メソッドをオーバーロードしました。これは、グリッド選択モデルで deselect all を呼び出していたメソッドです。ご覧のとおり、ここでコメントアウトしました

Ext.define('Ext.grid.SteveView', {
    extend: 'Ext.view.Table',
    alias: 'widget.stevegridview',

    onMaskBeforeShow: function(){
        var me = this,
            loadingHeight = me.loadingHeight;

        //me.getSelectionModel().deselectAll();
        me.all.clear();
        if (loadingHeight && loadingHeight > me.getHeight()) {
            me.hasLoadingHeight = true;
            me.oldMinHeight = me.minHeight;
            me.minHeight = loadingHeight;
            me.updateLayout();
        }
    }
});

上記のスクリプトをインクルードし、グリッドを作成するときに、viewType を stevegridview に変更するか、任意の名前に変更します。

    {
        xtype: 'grid', 
        viewType:'stevegridview',
        store:'some store'
        ...
    }

新しいビュー タイプが使用され、新しい onMaskBeforeShow() が呼び出されます。

于 2012-10-03T01:34:55.987 に答える