2009-10-15 11 views
7

Chcę utworzyć składnik Ext.tree.TreePanel i okresowo ładować zawartość z zewnętrznego URL. Więc pisałem cośJak ponownie załadować Ext.tree.TreePanel na żądanie?

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

A teraz chcę, aby przeładować tego drzewa, więc piszę:

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

I nic się nie dzieje.

dodać: Jedynym sposobem, zostały stwierdzone jest ustawiony trochę niepoprawną wartość dataUrl param na TreeLoader stworzenia:

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

Odpowiedz

7

Co szukasz jest metoda load dla TreeLoader. Tak więc coś takiego powinno działać na waszym przykładzie.

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

Oto mój pełny przykład, który jest dostępny na moim demo miejscu, jak również. Jest to trochę wymyślne i zhakowane razem z jednym z demów ExtJS, ale powinno ci to dać to, czego potrzebujesz.

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

Cheers

+0

Myślę, że przykład przestanie działać po usunięciu '{dataUrl: 'get-nodes.php'}' z TreeLoader wywołania konstruktora. W moim przypadku rozszerzam Ext.tree.TreePanel, ale używam podobnego kodu i nie działa po usunięciu definicji 'dataUrl: 'fake-url''. –

+0

Zaktualizowałem przykład, aby nie używać wartości dataUrl w konstruktorze. Z tego powodu początkowo wyłączam drzewo, ponieważ nie ma danych. Kliknij przycisk odświeżania, drzewo zostanie załadowane i włączone. – rwilliams

Powiązane problemy