0

我正在使用 extjs treepanel。在那我动态加载父节点和子节点。我想一次打开一个节点。我不想同时打开两个节点。ext js 中是否有可用的事件或属性?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
                        })
                    });
4

1 回答 1

0

您可以使用该expand事件。

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

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

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

于 2013-10-29T17:38:58.680 回答