我在Extjs中有一个应用程序,我需要选择一个特定的节点来扩展树。
我使用以下方法:
var record = tree.getRootNode().FindChild('text', 'employee', true);
tree.getSelectionModel().select(record);
以这种方式不起作用,但如果我选择任何一个节点然后运行上述方法,它的工作没有问题。
请帮助
UPDATE 代码:
tree.expandPath(route, "text", "->", function() {
var record = tree.getRootNode().findChild('text','BASE',true);
tree.getSelectionModel().select(record);
});
答案 0 :(得分:0)
可能尚未加载节点。如果需要展开树,最好的方法是使用expandPath方法,如果需要选择节点,请在expandPath回调中执行。
答案 1 :(得分:0)
您何时尝试使用此代码选择节点?树面板生成了吗?在这种情况下,也许来自treepanels实现的一些代码将重置选择。因此,对于测试,请尝试使用选择模型上的锁:
var record = tree.getRootNode().findChild('text','BASE',true);
tree.getSelectionModel().select(record);
tree.getSelectionModel().setLocked(true);
(如果你知道在加载商店数据时应该扩展的节点,你也可以在这个特定记录/节点的数据中将“expanded”设置为true。然后由ExtJS自动完成扩展。)
答案 2 :(得分:0)
朋友感谢您的帮助,我能够解决我的问题。
显然我没有选择节点,因为它没有显示窗口并且节点不可用,所以这里在渲染后添加一个监听器。
所以我保留了我的代码:
listeners: {
afterrender : function(){
this.selectPath(this.ruta, 'text', '->', function (s,n) {
var nodeEl = Ext.get(this.view.getNode(n));
nodeEl.scrollIntoView(this.view.el, false, true);
});
}
}
这个解决方案除了选择我之外,节点也会移动到树中的位置。
希望能为他们服务。问候!