ExtJs - TreePanel 的扩展路径不起作用

Posted

技术标签:

【中文标题】ExtJs - TreePanel 的扩展路径不起作用【英文标题】:ExtJs - expandPath of TreePanel not working 【发布时间】:2012-08-31 09:19:07 【问题描述】:

我的 Treepanel 具有 id 'treePanel' 并且工作正常。

示例路径:

/subfolder3/abc

使用expandAll() 扩展所有内容适用于树形面板,但expandPath() 不起作用。

现在,在某些事件之后,我想在我的树中扩展一条路径。但是我做不到。

到目前为止我已经尝试过:

var oTreePanel = Ext.getCmp('treePanel');

oTreePanel.expandPath('/subfolder3/abc'); // or '/subfolder3' or '/root/subfolder3'

没有错误消息,但树中也没有变化。

怎么办?

编辑

oTreePanel.selModel.getSelection()[0].getPath()/root/

我尝试了什么:

路径:/root => successtruenode 表示 node.data.id=""node.data.path=""

路径:/root/ => successtruenode 表示 node.data.id=""node.data.path="/report_with_variables"(树中的第一个节点)和 node.data.parentId= "root"

路径:/root/subfolder3 到路径:successfalsenode 表示 node.data.id=""node.data.path=""node.getPath()/root

我对树的 Json 响应如下所示:

"status":"status":0,"msg":"Ok","protocolversion":"extjs.json","value":"name":"","path":"\/","type":"folder","leaf":false,"children":["name":"report_with_variables","path":"\/report_with_variables","type":"report","leaf":true,"title":"Report ohne Variablen","description":null,"name":"subfolder1","path":"\/subfolder1","type":"folder","leaf":false,"name":"subfolder2","path":"\/subfolder2","type":"folder","leaf":false,"name":"subfolder3","path":"\/subfolder3","type":"folder","leaf":false,"name":"testreports","path":"\/testreports","type":"folder","leaf":false]

【问题讨论】:

【参考方案1】:

expandPath 工作正常,尝试验证您尝试扩展的路径。 该路径默认构建在节点的模型idProperty 字段上,它是模型数据中的id 属性,可能与您在示例中尝试使用的不同。

    验证路径和节点ID

    尝试按以下格式运行expandPath:

    tree.expandPath(path, null, null, function(success, node) //analyse method execution );

    所以你可以分析回调函数中发生了什么:

    如果成功为假且节点为空,则路径为空

    如果成功为假且节点=根节点,则路径一开始就无效

    如果成功为假且节点不是根,则路径部分无效

    尝试使用getPath()方法获取树中某个节点的路径,然后使用expandPath获取路径:

    var n = node.getPath(); tree.expandPath(path);

    它应该可以工作

【讨论】:

问题是Model没有id,你可以给Model加上id字段,然后从服务器端返回,或者比如把Model的id设置成path字段(不好,可以有具有相同名称的文件夹/文件,但对于测试用例,您可以尝试):idProperty: 'path' 在树的存储模型中。这是因为默认情况下,如果未指定 idProperty 配置选项,则使用模型 id 名称 我在模型中尝试了 idProperty 方法,但树没有被加载。抱歉,我没有让它工作。 试试简单的例子jsfiddle.net/nbabinski/PF4Lu/1 它会创建一棵树(我只是从 ext 示例中获取)并在一秒钟内展开一个节点。打开控制台查看节点的路径。也许从你那里得到代码 sn-p 会更容易解决问题。在上面的示例中,它没有在商店中使用模型,但在您的代码中,我认为您正在使用一个。同样在编辑部分,您尝试了根据您的 json 数据和默认 expandPath 功能不正确的路径,因为它尝试使用它们的 'id' 字段扩展节点。 感谢您的帮助。问题是路径和id【参考方案2】:

我遇到了同样的问题,在我的情况下,expandPath 的回调从未被调用过。

原因是在调用 expandPath 方法时,树状存储仍在加载先前的请求。在调用 expandPath 之前,确保您的 tree.store 没有加载。

也许这对您和/或其他人有帮助。

【讨论】:

以上是关于ExtJs - TreePanel 的扩展路径不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 ExtJs 4.1 TreePanel 中隐藏一个节点

[extjs] extjs第一个组件treepanel

ExtJs基础知识总结:DomIFrame和TreePanel

Extjs TreeStore,多个异步请求,treepanel渲染错位

ExtJs 5:TreePanel:没有得到默认的叶子图标和线条

无法在 extjs 4 的 Treepanel 中显示 json 数据