Tree 如何重新加载树的选定节点

Tree 如何重新加载树的选定节点,tree,extjs4,reload,treenode,Tree,Extjs4,Reload,Treenode,我需要在删除节点的一个叶子后重新加载一棵树。重新加载整个商店的问题是,它太慢了。这就是为什么我只想重新加载一个其叶被删除的节点 我试过这个。。但是上面说空 Ext.getCmp('myTree').root.reload(); 我也试过了 var tempParent = Ext.getCmp('myTree').getSelectionModel().getSelection()[0].parentNode; Ext.StoreMgr.lookup('myStore').load( {nod

我需要在删除节点的一个叶子后重新加载一棵树。重新加载整个商店的问题是,它太慢了。这就是为什么我只想重新加载一个其叶被删除的节点

我试过这个。。但是上面说空

Ext.getCmp('myTree').root.reload();
我也试过了

var tempParent = Ext.getCmp('myTree').getSelectionModel().getSelection()[0].parentNode;
Ext.StoreMgr.lookup('myStore').load( {node: tempParent});
这也没用。。。 有没有人有类似的问题已经解决了

更新

var node = Ext.getCmp('myTree').getSelectionModel().getSelection()[0].parentNode.get('id');
这确实给了我父节点。。。 但当我加载它时

Ext.getCmp('myTree').store.load({ node: node });
我得到这个错误

TypeError:b.getId不是函数

第二次更新--

这就是我的树的样子

  • 第一节点

    • 第一片叶子
  • 第二节点

    • 第一片叶子
现在当我删除第二个节点的第一个叶子时。。。第一个节点显示在第二个节点下

  • 第一节点

    • 第一片叶子
  • 第二节点

    • 第一节点

以下是如何刷新树的特定节点。在您的情况下,您可能需要刷新父节点,在该节点下需要显示更改:

   refreshRow:function(id){
        var node = this.store.getNodeById(id);
        if (node){
            this.store.load({node:node});
        }
     }
更新

var node = Ext.getCmp('myTree').getSelectionModel().getSelection()[0].parentNode.get('id');

根据您提供的信息,我的结论是,您正在尝试在树中的多个位置使用特定服务器生成的ID填充同一节点。树存储不支持此操作。即使其余节点信息相同,每个节点也必须具有唯一的ID

这棵树是固定在商店里的吗?您能否提供更多关于为什么需要重新加载父节点的信息?ExtJs通常会正确处理这个问题,而无需您做任何事情。谢谢Izhaki。。。我的树上有一个删除叶子的函数。。。可以有多个相同的leaf(假设可以有2个'leaf1')。。。因此,当我在“leaf1”上删除时,只有选定的“leaf1”被删除。。第二片叶子还在树上。。。但是当我手动刷新浏览器时,它就消失了,你不能只听节点删除;查找相关节点;同时删除它们?这正是我想做的。。。查找相关节点。。。而我似乎不能把我的头围绕着它。。。你能给我看一些样品吗?我在下面更新了我的答案。。。此refreshRow是否在beforedrop配置中?因为我在一次ajax失败fn后尝试这么做,它说GetNodeById不是一个函数,可能是因为ajax回调在windows范围内。更改代码以获取对树面板存储的引用。Yes Dbrin。。我使用了Ext.getCmp.getSelectionModel().getSelection()[0].getNodeById(id),但仍然收到相同的错误。。。但是,执行parentNode.get('id')是可行的。它给了我节点,但它说TypeError:b.getId不是loadgetNodeById上的函数是store::store.getNodeById(id)上的函数;嗯……:)。。。现在,它刷新节点,但随后在执行删除的节点上加载树的第一个节点。。。我还得到了一个错误TypeError:a[b]是未定义的