2010-12-15 6 views

Antwort

2

fand ich eine Methode, wie unten, scheint aber die ‚casecade‘ Methode funktionierte nicht gut, ich anrufen müssen ‚Reset‘ mehrmals unkontrolliert alle geprüft Kinder:

reset: function(){ 
      startNode = this.root; 
      var f = function() { 
       if (this.attributes.checked) { 
        this.attributes.checked = false; 
        this.getUI().toggleCheck(false); 
       } 
      }; 
      startNode.cascade(f); 
     } 
2

Ich konnte keine der anderen Antworten mit Extjs 4.0.7 arbeiten. Auch die Verwendung der "Kaskaden" -Methode gab eine Warnung aus, dass sie veraltet ist. Es wurde stattdessen empfohlen, "cascadeBy" zu verwenden. Anders als der Methodenname konnte ich keinen Unterschied in der Methodensignatur finden (gleiche Argumente, dieses Verhalten).

Allerdings konnte ich diesen Code finden, die funktioniert:

{ 
    xtype: 'button', 
    text: 'Deselect All', 
    listeners:{ 
     click: function(){ 

      var tree = Ext.ComponentQuery.query('treepanel[itemId=user_flags_tree]')[0]; 
      tree.getRootNode().cascadeBy(function(){ 

       this.set('checked', false); 

      }); 

     } 
    } 
} 

Dank dieser Beitrag: http://www.sencha.com/forum/showthread.php?149627-Programmaticaly-check-uncheck-checkboxes-in-the-Tree-panel

+1

wirklich, cascadeBy (function() {this.set (‚geprüft ', falsch);}); macht den Trick! – martyglaubitz

0
var nodes = treePanel.getView().getNodes(); 
var records = treePanel.getView().getRecords(nodes); 
for (var i = 0; i < records.length; i++) { 
    records[i].set('checked',true); 
} 
Verwandte Themen