Ext JS 4: Holen Sie sich TreeStore Knoten internalId

Ist es möglich, dass ein Knoten durch seine internalId? Ich habe versucht:

Store

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'
    }
  }
});

Baum

Ext.create('Ext.tree.Panel', {
  id: 'myTree',
  rootVisible: false,
  store: Ext.create('myStore'),
  width: 300,
  height: 500,
  renderTo: Ext.getBody()
});

Hinzufügen und erste Knoten

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.

Ich weiß, das ist wahrscheinlich nicht möglich, also werde ich erklären, was ich zu tun versuche... ich versuche, ändern Sie die id eines Knotens, also wenn ich mit getNodeById kann ich verwenden Sie die neue id, die ich gemacht habe. Die Idee ist, wenn ich änderte die id, die ich finden konnte, es in den Baum, und es wäre einzigartig, da lasse ich nur für das hinzufügen von einzigartigen id ' s... aber die id nicht ändern würde. Ich dachte dann, dass mit der "ext-record" id würde sicherstellen, dass ich wieder eine eindeutige id, aber dann konnte ich nicht herausfinden, haha.

Hier ist etwas code, der zeigt, was ich gerne tun würde.

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

Ich habe versucht, über die Struktur der sync-Methode, aber das hat nichts tun. Ich Frage mich nur, wie kann ich aktualisieren Sie den node-id, also wenn ich mit getNodeById kann ich mit der neuen id. Irgendwelche Gedanken?

  • Poste bitte etwas code, wie man erstellen Sie Ihre Baum-store
  • Hilft das?
InformationsquelleAutor incutonez | 2012-03-22
Schreibe einen Kommentar