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();
  }
} 
5
задан Natkeeran 12 April 2010 в 15:58
поделиться

2 ответа

Это потому, что узел не может быть выбран до тех пор, пока дерево не будет визуализировано. Попробуйте добавить выбранный узел в прослушиватель событий, ожидающий события рендеринга.

0
ответ дан 13 December 2019 в 19:24
поделиться

Я использую этот код в TreeGrid для выбора узла

_I.treeGrid.getSelectionModel().select(_I.treeGrid.getRootNode());

Я не пробовал это в TreePanel, но поскольку TreeGrid основан на нем, я просто предполагаю, что это работает. Я использовал событие загрузки загрузчика, чтобы добавить аналогичный код после выполнения запроса XHR, поэтому попробуйте написать свою функцию 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"));
      }
    }
5
ответ дан 13 December 2019 в 19:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: