2013-10-28 6 views
0

im, используя extjs treepanel. В этом им динамическая загрузка родительского и дочернего узлов. Я хочу открыть один узел за раз. Я не хочу, чтобы одновременно открывались два узла. Являются ли какие-либо события или свойства доступными в ext js? Метод Collapseall() не помогает мне.Как свернуть узел, если узел открывается в extjs treepanel

var panel = new Ext.tree.TreePanel({ 
     cls: 'shaperepository', 
     loader: new Ext.tree.TreeLoader(), 
     root: this.shapeList, 
     autoScroll: true, 
     rootVisible: false, 
     lines: false, 
     anchors: '0, -30', 

    ..... 
      var tree = new Ext.tree.TreePanel({ 
         cls: "Schematree", 
         loader: new Ext.tree.TreeLoader(), 
         width: 150, 
         height: 250, 
         root: new Ext.tree.AsyncTreeNode({ 
          expanded: true, 
          leaf: false, 
          text: 'Schema', 
          children: children 
         }) 
        }); 

ответ

0

Вы можете использовать событие expand.

Я не знаю, какое точное поведение вы хотите от вопроса, но вы можете получить корневой узел, запустить collapseAll с true для рекурсивного, чтобы закрыть все узлы. Затем в callaspeAll callback разверните узел, из которого было отправлено событие, и любого из его родителей (рекурсия).

Документация для NodeInterface может быть полезной.

Единственный другой вариант, о котором я могу думать, - это вызвать collaspeAll для всех братьев и сестер (previousSibling и nextSibling рекурсивно), а также братьев братьев рекурсивно. Это разрушит все узлы, кроме узла и его родителей, которые были просто расширены. Этот метод должен приводить к меньшему перерисовке, но я не пробовал ни один из методов.

Смежные вопросы