Extjs:Tree,创建树后选择节点

Nat*_*ran 5 javascript ajax extjs

我有一个简单的TreePanel.我想在加载它时选择一个特定的节点.节点来自远程文件(json).

树正在按预期加载.但是,未选择节点.Firebug将节点显示为未定义.这可能是因为异步属性.但是,我无法另外配置,或指定选择节点.

欢迎任何建议,谢谢.

    LeftMenuTree = new Ext.tree.TreePanel({
    renderTo: 'TreeMenu',
    collapsible: false,
    height: 450,
    border: false,
    userArrows: true,
    animate: true,
    autoScroll: true,
    id: 'testtest',
    dataUrl: fileName,
    root: {
  nodeType: 'async',    
     iconCls:'home-icon',
     expanded:true,
       text: rootText
    },
    listeners: {
        "click": {
    fn: onPoseClick,
                 scope: this
               }
        },
          "afterrender": {
       fn: setNode,
       scope: this 
      }  
 });
function setNode(){
 alert (SelectedNode);
  if (SelectedNode == "Orders"){
    var treepanel = Ext.getCmp('testtest');
    var node = treepanel.getNodeById("PendingItems");
    node.select();
  }
} 
Run Code Online (Sandbox Code Playgroud)

SBU*_*OLD 5

我在TreeGrid中使用此代码来选择节点

_I.treeGrid.getSelectionModel().select(_I.treeGrid.getRootNode());
Run Code Online (Sandbox Code Playgroud)

我没有在TreePanel中尝试过这个,但是由于TreeGrid基于它,我只是假设它有效.在XHR请求完成后,我使用加载器的load事件来插入类似的代码,所以尝试编写你的setNode函数,如下所示:

var loader = LeftMenuTree.getLoader();
loader.on("load", setNode);    
function setNode(){
     alert (SelectedNode);
      if (SelectedNode == "Orders"){
        var treepanel = Ext.getCmp('testtest');
        treepanel.getSelectionModel().select(treepanel.getNodeById("PendingItems"));
      }
    }
Run Code Online (Sandbox Code Playgroud)


Mik*_*ark 0

这是因为在渲染树之前该节点实际上是不可选的。尝试将节点选择添加到侦听渲染事件的事件侦听器中。