Как снять отметки со всех узлов дерева в Ext.tree.TreePanel? - PullRequest
3 голосов
/ 15 декабря 2010

Я бы хотел, чтобы метод 'reset' снял отметку со всех отмеченных узлов в Ext.tree.TreePanel.

Ответы [ 4 ]

7 голосов
/ 29 января 2011
tree.getRootNode().cascade(function(n) {
    var ui = n.getUI();
    ui.toggleCheck(false);
});

Как найдено здесь: http://www.sencha.com/forum/showthread.php?12888-solved-programatically-unchecking-checked-tree-nodes&p=62845#post62845

2 голосов
/ 18 апреля 2012

Мне не удалось получить ни один из других ответов для работы с 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

2 голосов
/ 16 декабря 2010

Я нашел метод, как показано ниже, но, похоже, метод casecade не работает должным образом, мне нужно несколько раз вызвать 'reset', чтобы снять флажок со всех проверенных потомков:

reset: function (){
            startNode = this.root;
            var f = function () {
                if (this.attributes.checked) {
                    this.attributes.checked = false;
                    this.getUI().toggleCheck(false);
                }
            };
            startNode.cascade(f);
        }
0 голосов
/ 09 июня 2016
var nodes = treePanel.getView().getNodes();
var records = treePanel.getView().getRecords(nodes);
for (var i = 0; i < records.length; i++) {
    records[i].set('checked',true);
}
...