Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Изменить все элементы дерева (https://javascript.ru/forum/extjs/46572-izmenit-vse-ehlementy-dereva.html)

adamenko.artem 15.04.2014 15:54

Изменить все элементы дерева
 
Есть дерево
for (var i=0; i<= buses.length-1; i++) {
                    objects.push(new Object({
                        text: buses[i].name_,
                        itemId:buses[i].obj_id_,
                        name:buses[i].proj_id_,
                        leaf: true,
                        checked: false
                    }));                
                }
                /*store для дерева*/
                var store = Ext.create('Ext.data.TreeStore', {
                    root: {
                        expanded: true,
                        children: objects
                    }
                });
                
                var window = Ext.getCmp('detailReport');
                var treePanel = Ext.getCmp('tree_panel');
                /*Само дерево*/
                var panel = Ext.create('Ext.tree.Panel', {
                    title: 'Автобусы',
                    width: 200,
                    height: 350,
                    store: store,
                    rootVisible: false,
                    region: 'west',
                    id: 'tree_panel'
                });

Мне надо чтобы, по нажатию кнопки все элементы были checked и наоборот были незачеканы.
Получить зачеканные в ручную элементы я могу. есть метод Checked()
Может есть методы для полученя всех элементов и вызова у них методов Check() или в ручную их перебрать и поставить им checked:true

Makarov 15.04.2014 16:12

Не имел тесно дела с TreeStore, но думаю можно попробовать сделать свой метод each, рекурсивно обойдя дерево с помощью метода eachChild

siber-biber 19.04.2014 06:21

Для такой мелочи готовые методы не предусмотрены. Есть http://docs.sencha.com/extjs/4.2.2/#...thod-cascadeBy и с его помощью такое делается:
store.cascadeBy(function (node) {
    node.set('checked', true);
})


Часовой пояс GMT +3, время: 13:04.