我在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”是在昨天选择的。如何在启动时自动选择该节点? (仅在启动时,仅在加载我的树时)。我怎么能这样做?
当我在树商店中使用代理时,选择不是这样的:
var record = this.getStore().getNodeById('1');
this.getSelectionModel().select(record)
但当我不使用代理时工作。
而且,我只需要在sturtup上进行选择
答案 0 :(得分: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
});