0
votes

I need some solution in ExtJS.I have tree store:

Ext.onReady(function(){

    var storeTree = Ext.create('Ext.data.TreeStore', {
    autoLoad:false,
    expanded: false,    
    proxy: {
        type: 'ajax',
        url: 'getOneLevelChilds',
    },

    root: {
        text: 'Ext JS',
        id: 'src',
        expanded: true,
        children:[]
    },
    ...
    ]
});

and when my tree loads at the first time I load last selected child (for example yesterday I open tree and select one. I saved it's JSON on database. so now Expand my tree)

storeTree.load({
    url: 'getLastSelectedChild'
});

OK, everything works! but now I need some solution.

when I load my tree at the startup (when it was loaded) I have JSON:

[
    {"id":3, "text":"first",},
    {"id":4, "text":"second",},
    {
    id:"0", text: "third", expanded: true, children: 
                [
                    {
                        id:"1", text: "child1", leaf: true
                    },
                    {
                        id:"2", text: "child2", leaf: true
                    }
                ] 

    },

]

but I also save selected node id in database. I know that id="2" was selected yeasterday. How can I select automatically that node at startup? (Only at startup, only when my tree will be loaded). how can I do that?

P.S when I use proxy in tree Store, selection is not workin like this:

 var record = this.getStore().getNodeById('1');
 this.getSelectionModel().select(record)

but it works when I dont use Proxy.

and also, I need that selection only at sturtup

1

1 Answers

3
votes

Assuming by "only at startup" you mean with the store's first load event and you actually have a tree panel (otherwise you cannot select a node):

treeStore.on({
    'load': function(store) {
        var node = store.getNodeById(2); // your id here

        treePanel.getSelectionModel().select([node]);

        // alternatively, if also want to expand the path to the node
        treePanel.selectPath(node.getPath());
    },
    single: true
});