【问题标题】:Extjs Grid ApplyState not reflecting the changes | Hide issueExtjs Grid ApplyState 未反映更改 |隐藏问题
【发布时间】:2019-05-23 18:55:08
【问题描述】:

当我们有多个父子网格并希望在加载调用后重新配置网格时:

listeners: {
     'afterrender': function (grid) {      
      var state =grid.getState();
      state.columns[1].hidden= true;
      grid.applyState(state); 
    }
}

这种行为甚至在 ExtJS 6.5.1 上仍然可以重现。

例如 https://www.sencha.com/forum/showthread.php?306941-Apply-state-after-grid-reconfigure

【问题讨论】:

    标签: extjs extjs4


    【解决方案1】:

    这是我用来修复隐藏列问题的替代方法。我使用的是 6.6,所以不确定这是否适用于 4.4。此外,您可能不需要暂停/恢复布局,但也不确定。

    Ext.define('MyApp.overrides.Grid', {
                override: 'Ext.grid.Panel',
    
                applyState: function () {
                    this.callParent(arguments);
    
                    Ext.suspendLayouts();
                    Ext.each(this.getColumns(), function (column) {
                        if (column.hidden) {
                            column.show();
                            column.hide();
                        }
                    });
                    Ext.resumeLayouts(true);
                }
        });
    

    【讨论】:

      【解决方案2】:

      这仍然是 applyState 的问题。当网格有多个隐藏列并且我们使用 applyState 函数时,它会使我们的网格崩溃。所以我们跳过了隐藏属性部分,尽管它在宽度变化、过滤器等方面工作顺利。

      listeners: {
           'afterrender': function (grid) {      
            var state =grid.getState();
            state.columns[1].hidden= false;
            grid.applyState(state); 
            grid.columns[3].hidden = true;
          }
      }
      

      如果您手动设置列的隐藏属性,它将隐藏它。

      【讨论】:

        猜你喜欢
        • 2020-06-27
        • 1970-01-01
        • 1970-01-01
        • 2013-01-10
        • 2014-07-12
        • 2015-03-06
        • 1970-01-01
        • 2012-10-18
        • 2019-10-10
        相关资源
        最近更新 更多