2013-03-07 712 views
1

我想使用expandAll()和collapseAll()爲一組網格分機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 
     }] 

    }); 

在此先感謝您的幫助!

回答

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

在我來說,我已經把崩塌頂部工具成觸發groupes工具欄。 奇怪的是,它只適用於從面板中獲取視圖並從視圖中分組的功能。

我覺得你的情況,當你做到這一點

var view = me.view; 
view.features[0].expandAll();  
+0

感謝您的答覆......它爲Chrome正常工作。但在IE瀏覽器拋出錯誤:對象不支持屬性或方法'forEach' – aswininayak 2013-03-08 06:51:27

+0

這裏是修復IE <9 – aswininayak 2013-03-08 07:07:03

+0

添加此腳本文件內: if(!Array.prototype.forEach){ \t Array .prototype.forEach = function(fn,scope){var i = 0,len = this.length; i aswininayak 2013-03-08 07:07:48

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中測試。

+0

你可以簡單地使用'Ext.Array.each' – 2013-03-14 09:53:35

1

在我的情況下,以下代碼工作。

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

P.S:我用來獲取view.features爲null