2010-12-15 6 views

ответ

2

Я нашел способ, как показано ниже, но, кажется, метод «casecade» не работал хорошо, мне нужно позвонить «сбросить» несколько раз непроверенным всех проверяемых детей:

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

Мне не удалось получить ни один из других ответов для работы с Extjs 4.0.7. Кроме того, использование метода «каскада» выдало предупреждение о том, что оно устарело. Вместо этого рекомендуется использовать «cascadeBy». Помимо имени метода, мне не удалось найти разницу в сигнатуре метода (те же аргументы, это, поведение).

Однако мне удалось найти этот код, который работал:

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

      }); 

     } 
    } 
} 

Благодаря этому сообщению: http://www.sencha.com/forum/showthread.php?149627-Programmaticaly-check-uncheck-checkboxes-in-the-Tree-panel

+1

действительно, cascadeBy (функция() {this.set («проверяемого ', ложный);}); делает трюк! – 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); 
} 
Смежные вопросы