Search code examples
extjstreepanel

Extjs tree wont appendChold to selected node in tree panel


I have a tree panel, and I am trying to add a bellow the selected item.

http://jsfiddle.net/zer8oLo7/

If you click on "Add To Root", it is working.
But. if you click on "Add To Selected", it doesn't work:

Ext.application({
    name: 'Fiddle',

    launch: function () {
        var store = Ext.create('Ext.data.TreeStore', {
            root: {
                expanded: true,
                children: [{
                    text: "detention",
                    leaf: true
                }, {
                    text: "homework",
                    expanded: true,
                    children: [{
                        text: "book report",
                        leaf: true
                    }, {
                        text: "algebra",
                        leaf: true
                    }]
                }, {
                    text: "buy lottery tickets",
                    leaf: true
                }]
            }
        });

        Ext.create('Ext.tree.Panel', {
            //title: 'Simple Tree',
            itemId: 'projectTree',
            viewConfig: {
                plugins: {
                    ptype: 'treeviewdragdrop'
                }
            },
            id: 'projectTree',
            width: 200,
            height: 500,
            store: store,
            renderTo: Ext.getBody(),
            dockedItems: [{
                xtype: 'toolbar',
                dock: 'top',
                items: [{
                    text: 'Add To Selected',
                    handler: function () {
                        var treeNode = Ext.getCmp('projectTree').getSelectionModel().getSelection()
                        treeNode.appendChild({
                            text: 'Child 4',
                            leaf: false
                        });
                    }
                }, {
                    text: 'Add to root',
                    handler: function () {
                        var treeNode = Ext.getCmp('projectTree').getRootNode();
                        treeNode.appendChild({
                            text: 'Child 4',
                            leaf: false
                        });
                    }
                }]
            }],

        });
    }
});

Solution

  • getSelection() somehow returns an array of nodes, so you need to take only first node:

    ... treeNode[0].appendChild({ text: 'Child 4', leaf: false }); ...