Extjs:如何防止checkboxModel取消选择pagingtoolbar页面上的行更改?

时间:2012-10-02 23:55:40

标签: extjs extjs4 extjs4.1

为什么CheckboxModel在使用paging toolbar时取消选择网页上所有选定的行?如何在页面更改时停止取消选择行?

我看到有一个pruneRemoved可用于阻止节点的修剪,我将其设置为false,但取消选择仍然被触发。不知道还有什么可以尝试。

我假设checkboxmodel向商店注册,或者当商店发生变化时,可能会通过pagingtoolbar通知...然后取消选择所有内容?为什么?我需要阻止它。

编辑: 我不希望deselectAll被解雇的原因是;我在select和deselect上附加了一个处理程序。选择将行添加到另一个网格,取消选择将其删除。因此,当用户选中一个复选框时,该行被添加到另一个网格中,当它们取消选中时,它将从该网格中删除。通过网格触发deselectAll,当商店发生变化时,我会丢失其他网格中保存的所有行。

1 个答案:

答案 0 :(得分: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()。