Extjs 4 treepanel 重新加载和展开

Posted

技术标签:

【中文标题】Extjs 4 treepanel 重新加载和展开【英文标题】:Extjs 4 treepanel Reload and Expand 【发布时间】:2012-02-16 09:57:34 【问题描述】:

我正在使用带有 Json 数据的 Extjs4 树形面板。我想重新加载树形面板并需要将树形菜单展开到指定节点。 我正在使用以下代码。请告诉我如何做到这一点。

//Define tree store

var store = Ext.create('Ext.data.TreeStore', 
    proxy: 
        type: 'ajax',
        url: 'my_tree.php',
    ,

    noCache: false
);

// Treepanel
var treePanel = Ext.create('Ext.tree.Panel', 
    id: 'mytree',
    renderTo: 'tree_div',
    height: 400,
    bodyBorder: false,
    border: false,
    singleExpand: true,
    rootVisible: false,
    store: store,
    useArrows: true
);

//Reload tree
    function reload_tree()
       var tree_panel = Ext.getCmp('mytree');
        tree_panel.enable();
        tree_panel.getLoader().dataUrl = 'my_tree.php';
       tree_panel.getLoader().load(tree_panel.root);
       //Expand tree node
       tree_panel.getLoader().on('load', function(loader, node) 
              tree_panel.getNodeById(nodeid).expand();
    //here node id is tree menu nodeid 
   );
    

提前致谢

【问题讨论】:

【参考方案1】:

重新加载树,我认为调用起来更简单

treePanel.getStore().load();

然后你可以监听加载事件,这样数据就被全部提取出来,最后从那里选择所需的节点。

    treePanel.on("load", function( treeStore, records, successful, operation))

    var id = 4; // This is the ID of the node that somehow you know in advance
    var node = treeStore.getNodeById(id);

    treePanel.expandPath(node.getPath());
);

HTH!

【讨论】:

感谢您的快速重播。树形面板加载正常但未扩展,在 firebug 中显示错误“node.getPath not a function”。 哦,我的错,抱歉 getPath() 在 ExtJS 4 中消失了,尽管您有其他方法来扩展所需的节点,请在这篇文章中查看 Molecule Man 的答案***.com/questions/6709106/…跨度> 嗯.. 谢谢字节奴隶非常感谢。它工作正常。节点扩展完全符合我的预期,但未选择(样式影响)。一般来说,如果任何被选中的treemunu节点都有一些不同的选中样式。你能帮帮我吗? 以前在 Exts2.0 中我使用的是 tree_panel.getNodeById(nodeid).ensureVisible(); tree_panel.getNodeById(nodeid).select();展开后选择节点。 如果找到要选择的记录的索引,可以使用 var selNodeIndex = 0; var record = tree_panel.getRootNode().getChildAt(selNodeIndex); tree.getSelectionModel().select(record);如果你不能那么,通过商店,尝试通过 id pr 获取记录,然后将记录传递给 tree.getSelectionModel().select(record);

以上是关于Extjs 4 treepanel 重新加载和展开的主要内容,如果未能解决你的问题,请参考以下文章

extjs6.0 treepanel设置展开和设置选中

ExtJS6 TreePanel树节点合上展开显示不同图标

extjs 4中treepanel重复加载。

ExtJs基础知识总结:DomIFrame和TreePanel

ExtJS treepanel 没有得到真正的子项

[extjs] extjs第一个组件treepanel