2009-10-15 9 views
7

Ich möchte Ext.tree.TreePanel Komponente erstellen und regelmäßig Inhalt von der externen URl laden. Also habe ich etwas geschrieben wieWie man Ext.tree.TreePanel bei Bedarf neu lädt?

new Ext.tree.TreePanel({ 
     root: { 
      nodeType: 'async', 
      text: 'asdasd', 
      draggable: false, 
      id: 'folders-tree-root' 
     }, 
     loader: new Ext.tree.TreeLoader() 
}); 

Und nun möchte ich diesen Baum neu zu laden, so dass ich schreiben:

tree.loader.dataUrl = 'folders-sample.json'; 
tree.root.reload(); 

und nichts passiert.

hinzufügen: Die einzige Möglichkeit, die ich gefunden habe eingestellt ist etwas ungültigen Wert auf dataUrl param auf TreeLoader Kreation:

new Ext.tree.TreePanel({ 
     root: { 
      nodeType: 'async', 
      text: 'asdasd', 
      draggable: false, 
      id: 'folders-tree-root' 
     }, 
     loader: new Ext.tree.TreeLoader(dataUrl: 'something') 
}); 

Antwort

7

Was Sie suchen ist die load Methode zur TreeLoader. So etwas sollte bei deinem Beispiel funktionieren.

tree.getLoader().load(tree.root); 

Hier ist mein volles Beispiel, das auch auf meine demo Website verfügbar ist. Es ist ein wenig gekünstelt und gehackt von einer der ExtJS-Demos, aber es sollte dich bekommen, was du brauchst.

Ext.onReady(function() { 
    var root = new Ext.tree.AsyncTreeNode({ 
     text: 'Ext JS', 
     id: 'src' 
    }); 
    var reloadTree = function() { 
     tree.enable(); 
     tree.getLoader().dataUrl = 'get-nodes2.php'; 
     tree.getLoader().load(tree.root); 
    }; 

    var tree = new Ext.tree.TreePanel({ 
     animate: true, 
     autoScroll: true, 
     nodeType: 'async', 
     loader: new Ext.tree.TreeLoader(), 
     containerScroll: true, 
     border: false, 
     disabled: true, 
     id: 'myTree' 
    }); 

    var myPanel = new Ext.Panel({ 
     items: tree, 
     border: false, 
     tbar: [{ 
      text: 'Refresh', 
      handler: reloadTree 
     }] 
    }); 

    tree.setRootNode(root); 
    myPanel.render('tree'); 
}); 

Prost

+0

Ich denke, Ihr Beispiel wird nicht mehr funktionieren, wenn Sie löschen '{DataURL: 'get-nodes.php'}' von TreeLoader Konstruktoraufruf. In meinem Fall erweitere ich Ext.tree.TreePanel, aber benutze ähnlichen Code und es funktioniert nicht nach dem Entfernen von 'dataUrl: 'fake-url'' Definition. –

+0

Ich habe das Beispiel aktualisiert, um keinen DataUrl-Wert im Konstruktor zu verwenden. Aus diesem Grund deaktiviere ich den Baum zunächst, da er keine Daten enthält. Klicken Sie auf die Schaltfläche zum Aktualisieren, der Baum wird geladen und aktiviert. – rwilliams

Verwandte Themen