ExtJS 4暂时禁用为网格

时间:2016-04-18 14:52:09

标签: extjs extjs4

我有一个网格,我想在执行某些脚本时禁用加载掩码的外观(以防止双重加载掩码,因为我将加载掩码添加到其父组件)。

我尝试过这样的事情

var myGridView = myGrid.getView();

myGridView.loadMask = false;

// I want so at this data loding did not appear loading mask
myGrid.getStore().load();

myGridView.loadMask = true;

但它不起作用。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您可以对LoadMask实例使用setDisabled()方法:

var myGridView = myGrid.getView();
myGridView.loadMask.setDisabled(true);
myGrid.getStore().load(function () {
   myGridView.loadMask.setDisabled(false);
});

您也可以使用enable()disable()方法。

答案 1 :(得分:0)

仔细阅读网格的源代码,加载掩码和存储后,我可以建议这个小的覆盖

Ext.override(Ext.grid.Panel, {
    setLoading: function (load) {
        var me = this,
            view = me.getView(),
            store = me.getStore();

        me.callParent(arguments);

        if (Ext.isBoolean(load) && view && view.loadMask && view.loadMask.isLoadMask && store) {
            if (load) {
                view.loadMask.bindStore && view.loadMask.bindStore(store);
            } else {
                view.loadMask.unbindStoreListeners(store);
            }
        }
    }
});

这听起来很疯狂,但是旋转器知道网格的商店。甚至还有(受保护的)方法可以使用http://docs.sencha.com/extjs/5.1.1/Ext.LoadMask.html#method-unbindStoreListeners

http://docs.sencha.com/extjs/4.1.3/#!/api/Ext.LoadMask-method-unbindStoreListeners