商店
Ext.define('myStore', {
extend: 'Ext.data.TreeStore',
storeId: 'treestore',
root: {
text: 'root',
children: [{
text: 'leaf1',
id: 'leaf1',
children: [{
text: 'child1',
id: 'child1',
leaf: true
},{
text: 'child2',
id: 'child2',
leaf: true
}]
},{
text: 'leaf2',
id: 'leaf2',
leaf: true
},{
text: 'leaf3',
id: 'leaf3',
leaf: true
}]
},
proxy: {
type: 'memory',
reader: {
type: 'json'
}
}
});
树
Ext.create('Ext.tree.Panel', {
id: 'myTree',
rootVisible: false,
store: Ext.create('myStore'),
width: 300,
height: 500,
renderTo: Ext.getBody()
});
添加和获取节点
Ext.getCmp('myTree').getRootNode().appendChild({id: 'test', text: 'test', leaf: true}); // this test node takes on the internalId 'ext-record-2'
Ext.getCmp('myTree').store.getNodeById('ext-record-2'); // returns undefined
Ext.getCmp('myTree').getRootNode().findChild('id', 'ext-record-2', true); // returns null
Ext.getCmp('myTree').getRootNode().findChild('internalId', 'ext-record-2', true); // I was just trying things at this point.
我意识到ŧ他可能是不可能的,所以我会解释我正在尝试做什么...我试图更改节点的id,所以当我使用getNodeById时,我可以使用我创建的新ID。这个想法是,如果我改变了ID,我可以在树中找到它,它会是唯一的,因为我只允许添加唯一的ID ...但ID不会改变。然后我认为使用'ext-record'编号会确保我返回一个唯一的编号,但后来我无法弄清楚,哈哈。
下面是一些代码,显示我想要做什么。
var node = Ext.getCmp('myTree').store.getNodeById('test'); // returns my test node
node.beginEdit();
node.set('id', 'blah');
node.endEdit();
node.commit(false);
alert(Ext.getCmp('myTree').store.getNodeById('blah')); // returns undefined
alert(Ext.getCmp('myTree').store.getNodeById('test')); // still returns my test node
我试过使用树的同步方法,但没有做任何事情。我只是想知道如何更新节点的ID,所以当我使用getNodeById时,我可以使用新的ID。有什么想法吗?
+0
请发表一些代码你如何创建你的树木店 –
2012-03-22 01:18:59
+0
这有帮助吗? –
2012-03-22 01:56:00