如果节点在extjs treepanel中打开,如何折叠节点

时间:2013-10-28 09:17:45

标签: javascript extjs

即时通讯使用extjs treepanel.In即动态加载父节点和子节点。我想一次打开一个节点。我不希望同时打开两个节点。在分机中是否有任何事件或财产? Collapseall()方法对我没有帮助。

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

1 个答案:

答案 0 :(得分:0)

您可以使用expand事件。

我不知道你想从问题中得到什么样的确切行为,但你可以获得根节点,使用true运行collapseAll以递归关闭所有节点。然后在collaspeAll回调中展开事件被触发的节点及其任何父节点(递归)。

NodeInterface的文档可能会有所帮助。

我能想到的唯一另一个选择是递归地调用所有兄弟姐妹的collaspeAll(previousSibling和nextSibling递归)以及父母的兄弟姐妹。这会折叠除节点之外的所有节点以及刚刚展开的父节点。这种方法应该减少重绘次数,但我没有尝试过任何一种方法。