【问题标题】:Extjs: How to prevent checkboxModel from deselecting rows on pagingtoolbar page change?Extjs:如何防止 checkboxModel 取消选择 pagingtoolbar 页面更改上的行?
【发布时间】:2012-09-23 21:15:23
【问题描述】:

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

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

我假设 checkboxmodel 向商店注册,或者可能在商店更改时通知分页工具栏...然后取消选择所有内容?为什么?我需要防止这种情况发生。

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

【问题讨论】:

  • 您的用户如何知道他们选择了什么?
  • 什么意思?网格的功能是取消选择商店刷新时的所有内容。我不希望取消选择被解雇。我在选择和取消选择上有一个处理程序,选择将行添加到另一个网格,取消选择会删除它们。当网格触发取消全选时,我会丢失所有保存的行。

标签: extjs extjs4 extjs4.1


【解决方案1】:

我不确定这是否是正确的方法,但它对我有用。

我所做的是创建自己的 Ext.grid.View。我扩展了 ext.view.Table 并覆盖了 onMaskBeforeShow 方法。这是在网格选择模型上调用取消全选的方法。如您所见,我在这里发表了评论

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()。

【讨论】:

    猜你喜欢
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多