2010-12-15 8 views

Répondre

2

J'ai trouvé une méthode comme ci-dessous, mais semble la méthode « casecade » ne fonctionnait bien, je dois appeler « reset » plusieurs fois débridé tous les enfants cochés:

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

Je ne pouvais pas obtenir l'une des autres réponses à travailler avec Extjs 4.0.7. En outre, l'utilisation de la méthode "cascade" a émis un avertissement selon lequel elle est déconseillée. Il a recommandé d'utiliser "cascadeBy" à la place. Autre que le nom de la méthode, je n'ai pas pu trouver de différence dans la signature de la méthode (mêmes arguments, ceci, comportement).

Cependant, j'ai pu trouver ce code qui a fonctionné:

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

      }); 

     } 
    } 
} 

Merci à ce poste: http://www.sencha.com/forum/showthread.php?149627-Programmaticaly-check-uncheck-checkboxes-in-the-Tree-panel

+1

vraiment, cascadeBy (function() {this.set (« checked ', faux);}); fait le tour! – 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); 
} 
Questions connexes