1

グループ化グリッド Ext 4.1 に expandAll() と collapseAll() を使用しようとしています

しかし、オーバーライド後に機能しません: エラーを取得する 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 をサポートしていません

リンクは次のとおりです

したがって、修正は次のとおりです。

  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 に答える