Extjs - панель дерева разваливается и разворачивается в зависимости от состояния - PullRequest
0 голосов
/ 29 мая 2018

Я хочу свернуть или развернуть узел на основе условия в tree.panel в extjs 4.2.1

tree.on("beforeitemexpand",function(node) {
    if (booleanFlag === true) {
        //allow to expand
    } else {
        //donot allow to expand
    }
});

Я пробовал beforeitemExpand, а затем возвращает false, если booleanFlag имеет значение false, но это не такрабочий.

1 Ответ

0 голосов
/ 29 мая 2018

В событии "beforeitemexpand", похоже, есть ошибка в Extjs 4.2.1, она не идеальна, но вы можете использовать "beforeitemclick" и "beforeitemdblclick" для достижения желаемой функциональности:

Ext.application({
name: 'Fiddle',

launch: function () {

    var enableHomeExpand = false;
    var enableBookExpand = false;

    var store = Ext.create('Ext.data.TreeStore', {
        root: {

            children: [{
                text: 'homework',
                expanded: false,
                children: [{
                    text: 'book report',
                    children: [{
                        text: 'test',
                        leaf: true
                    }, {
                        text: 'test 2',
                        leaf: true
                    }]
                }, {
                    text: 'algebra',
                    leaf: true
                }]
            }, {
                text: 'homework',

                children: [{
                    text: 'book report',
                    children: [{
                        text: 'test',
                        leaf: true
                    }, {
                        text: 'test 2',
                        leaf: true
                    }]
                }]
            }]
        }
    });

    var handleClick = function (node,rec,item){
                       if ((rec.data.text =="book report")&&(enableBookExpand)){
                           return true;
                       }
                       if ((rec.data.text =="homework")&&(enableHomeExpand)){
                            return true;
                        }
                        return false;
                    }

    var treepanel = Ext.create('Ext.tree.Panel', {
        title: 'Simple Tree',
        width: 400,
        height: 200,
        store: store,
        rootVisible: false,
        renderTo: Ext.getBody(),
        listeners:{
            beforeitemdblclick: handleClick,
            beforeitemclick: handleClick
        },
        buttons:[{
            text:'Enable Expand "homework"',
            handler: function(){ enableHomeExpand = true; }
        },
        {
            text:'Enable Expand "book report"',
            handler: function(){ enableBookExpand = true; }
        }]

    });

}
});

Вот это FIDDLE

...