这是我的代码 -
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);
}
}
}
当用户单击树的任何节点时,我从数据库中获取数据并使用handleAction
方法渲染另一个面板。就我而言,我需要在另一个面板中显示节点的信息并更新它。在更新处理程序上,我需要将节点的文本/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);
但是,当我使用鼠标单击手动展开它时,节点会更新。
请帮忙。提前致谢。