选择树节点不起作用

时间:2014-05-26 17:02:42

标签: javascript extjs extjs4 extjs4.2

我在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);
        }); 

3 个答案:

答案 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);
              });
    }
}

这个解决方案除了选择我之外,节点也会移动到树中的位置。

希望能为他们服务。

问候!