TreePanel没有扩展ExtJS 3

时间:2013-04-05 09:05:28

标签: extjs extjs3 expand treenode treepanel

这是我的代码 -

 var myTree = {
     containerScroll: "true",
     width: 500,
     root: new Ext.tree.AsyncTreeNode({
         id: "source",
         text: "Root",
         expanded: true,
         draggable: true,
         expandable: true
     }),
     loader: new Ext.tree.TreeLoader({
         dataUrl: 'page.php?action=Get_Tree',
         preloadChildren: true,
         expandAll: function () {}
     }),
     xtype: "treepanel",
     loadMask: {
         msg: 'Loading...'
     },
     maskDisabled: false,
     id: "tree",
     listeners: {
         click: function (node, event) {
             // Render entity data in right panel
             handleAction(node);
         }
     }
 }

当用户点击Tree的任何节点时,我从DB获取数据并使用handleAction方法渲染另一个面板。在我的情况下,我需要在另一个面板中显示节点的信息并更新它。在更新处理程序上,我需要更改节点的text / id作为其现在更新。

这工作正常但我需要刷新树,以便我可以查看更新的节点。但是,它对我不起作用:(。

这是我更新节点的代码 -

var tree = Ext.getCmp('tree');
var id = req.responseText.split('#')[1];
var myId = 'Spec#' + entityId;
var node = tree.getNodeById(myId);
node.id = 'Spec#' + id;
node.text = updated_spec_id;
tree.enable();
tree.getLoader().dataUrl = 'page.php?todo=Get_Tree';
tree.getLoader().load(tree.root);
// This I have tried but not succeed. 
tree.getView().refresh();
tree.expandAll();
node.expand();
tree.getRootNode().expand(true);

但是,当我使用鼠标单击手动展开它时,节点会更新。

请帮忙。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您是否尝试过doLayout功能?摘自doc:

  

如果在调用add时已经呈现了Container,则可能需要调用doLayout来刷新视图,这会导致呈现任何未呈现的子组件。这是必需的,以便您可以根据需要添加多个子组件,同时只刷新一次布局。

在我看来,你的树正常行为。因为您使用了click事件,因此单击节点时会触发此事件。