0

我需要 ExtJS 中的一些解决方案。我有树存储:

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:[]
    },
    ...
    ]
});

当我的树第一次加载时,我加载了最后一个选择的孩子(例如昨天我打开树并选择一个。我将它的 JSON 保存在数据库中。所以现在展开我的树)

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

好的,一切正常!但现在我需要一些解决方案。

当我在启动时(加载时)加载我的树时,我有 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
                    }
                ] 

    },

]

但我也将选定的节点 ID 保存在数据库中。我知道id="2"被选中了。如何在启动时自动选择该节点?(仅在启动时,仅当我的树将被加载时)。我怎样才能做到这一点?

PS当我在树商店中使用代理时,选择不是这样工作的:

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

但是当我不使用代理时它可以工作。

而且,我只需要在 sturtup 进行选择

4

1 回答 1

3

假设“仅在启动时”是指商店的第一个加载事件,并且您实际上有一个树面板(否则您无法选择节点):

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
});
于 2013-10-16T09:11:43.773 回答