1

我正在尝试将 expandAll() 和 collapseAll() 用于分组网格 Ext 4.1

但它在覆盖后不起作用:出现错误 expandAll() 未定义

            Ext.override(Ext.grid.feature.Grouping, {
                  collapseAll: function() {
                    var self = this, view = self.view;
                    view.el.query(self.eventSelector).forEach(function (group) {
                      var group_body = Ext.fly(group.nextSibling, '_grouping');
                      self.collapse(group_body);
                    });
                  },

                  expandAll: function() {
                    var self = this, view = self.view;
                    view.el.query(self.eventSelector).forEach(function (group) {
                      var group_body = Ext.fly(group.nextSibling, '_grouping');
                      self.expand(group_body);
                    });
                  }
                });

这是我的视图文件:

 Ext.define('MCT.view.MyGrid',
   {
     extend:'Ext.grid.Panel',
     initComponent:function(){
       var me  = this;
       this.bbar = [{xtype:'button',text:'Expand All', handler:function(){

          me.features[0].expandAll();

          this.callParent(arguments);


        }}];
     },
     features : [{
        ftype : 'grouping',
                    groupHeaderTpl :'.......',
                    startCollapsed : true
       }]

  });

在此先感谢您的帮助!!

4

3 回答 3

5

这适用于我的应用程序...

    xtype: 'tool',                   
    type: 'collapse-top',
    hidden: true,
    handler: function (event, target, owner, tool) {
        var agPanel = owner.up(), //getting thePanel
            view = agPanel.view,  
            gFeature = view.features[0]; //I júst have one feautre... so [0] works

        gFeature.collapseAll();
    }

就我而言,我已将折叠顶部工具放入触发组的工具栏中。有趣的是,它只有在您从面板中获得视图并从视图中获得分组功能时才有效。

我认为在你的情况下,当你这样做时它应该工作

var view = me.view;
view.features[0].expandAll();    
于 2013-03-07T20:37:41.863 回答
3

就我而言,以下代码有效。

view.normalView.features[0].collapseAll();
view.normalView.features[0].expandAll();

ps:我曾经将view.features作为null

于 2014-07-07T07:23:18.293 回答
0

IE < 9 不支持 forEach

这是链接:https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/forEach?redirectlocale=en-US&redirectslug=Core_JavaScript_1.5_Reference%2FObjects%2FArray%2FforEach#Compatibility

所以解决方法是:

  if ( !Array.prototype.forEach ) {
    Array.prototype.forEach = function(fn, scope) {
     for(var i = 0, len = this.length; i < len; ++i) {
         fn.call(scope, this[i], i, this);
     }
   }
 }

它适用于 IE 和 Chrome。未在 FF 中测试。

于 2013-03-08T07:10:17.750 回答