如何使用ExpandAll和CollapseAll使用分组功能对网格进行分组

时间:2013-03-07 14:39:35

标签: extjs grid extjs4 grouping

我正在尝试将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
       }]

  });

先谢谢你的帮助!!

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

在我的情况下,以下代码有效。

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

p.s:我以前将view.features视为 null

答案 2 :(得分:0)

IE< 9不支持每个

以下是链接: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中测试过。