2010-07-07 2 views
3

Как можно добавить дочерний узел к существующей TreePanel программно с помощью JavaScript?ExtJS: Как динамически добавлять дочерние узлы в treepanel

У меня есть TreePanel, который отображает активные слои карты (с помощью GeoExt):

treeConfig = new OpenLayers.Format.JSON().write([{ 
    nodeType: "gx_baselayercontainer", 
    text: "Base layers", 
    expanded: true 
    }, { 
    nodeType: "gx_overlaylayercontainer", 
    text: "Overlays", 
    expanded: true, 
    loader: { 
     baseAttrs: { 
      radioGroup: "foo", 
      uiProvider: "use_radio" 
     } 
    } 
}], true); 

treePanel = new Ext.tree.TreePanel({ 
    id: 'mainpanel', 
    border: true, 
    region: "west", 
    title: "Map layers", 
    width: 200, 
    split: true, 
    collapsible: true, 
    margins: '0 0 5 5', 
    collapseMode: "mini", 
    autoScroll: true, 
    loader: new Ext.tree.TreeLoader({ 
     applyLoader: false, 
     uiProviders: { 
      "use_radio": LayerNodeUI 
     } 
    }), 
    root: { 
     nodeType: "async", 
     children: Ext.decode(treeConfig) 
    }, 
    listeners: { 
     "radiochange": function(node){ 
      alert(node.layer.name + " is now the the active layer."); 
     } 
    }, 
    rootVisible: false, 
    lines: false 
}); 

Пользователь должен иметь возможность добавить наложения слоя, нажав на кнопку, однако я не могу найти какой-либо примеры того, как это сделать.

Любые идеи?

ответ

3

Захватите родительский узел getNodeById или getRootNode и добавьте дочерний узел с appendChild.

+0

Вы знаете, если это работает в Ext JS 3.4? –

0

здесь пример кода для динамического добавления ребенка к панели дерева

Ext.getCmp('treeid').getRootNode().appendChild(response from database); 
Смежные вопросы