Как перезагрузить TreeStore? - PullRequest
       0

Как перезагрузить TreeStore?

5 голосов
/ 23 августа 2011

У меня есть nestedlist с treestore. При первой загрузке магазин загружается идеально, и список отображается в соответствии с магазином. Когда я нажимаю кнопку обновления, мое древовидное хранилище должно быть перезагружено с новыми данными (с той же моделью данных, что и в первый раз), а вложенный список также должен быть перезагружен с новым набором данных.

Ниже дано определение моего магазина деревьев

rightPaneStoreData = getFolderListData();

rightPaneStore =new Ext.data.TreeStore({

   autoLoad:false,

   model: 'FIMT.models.rightPaneModel',

   root: rightPaneStoreData,
   proxy: {

   type: 'memory',

   reader: {

       type: 'tree',
       root: 'items'
       }

   },
   listeners: {
       datachanged: function(records){
           alert("datachanged");
           }
   }

   });

rightPaneStore.load();

В Ext.data.JsonStore я проделал то же самое с помощью метода store.loaddata (). Но я не смог найти метод loaddata () для TreeStore.

Пожалуйста, помогите мне.

Ответы [ 5 ]

9 голосов
/ 27 января 2012

Это работает для меня. Я использую MVC, и этот код вызывается в моем контроллере.

treeStore.getRootNode().removeAll();
treeStore.load();
0 голосов
/ 31 октября 2015
// Remove all current children if clear on load not set 
if (!treeStore.clearOnLoad) { 
    record.removeAll(); 
} 

// Call load, refreshing our view when done... 
var viewRefresher = function() { 
    view.refresh(); 
}; 

treeStore.load({ 
    node: record, 
    callback: viewRefresher 
});  
0 голосов
/ 30 августа 2013
treeStore.getRootNode().removeAll();
treeStore.setRootNode({
  id: rootNodeId,
  text: 'root'
  // other configs in root
});
// if you had non-standard children loads, then you would need to call:
treeStore.getProxy().load();
// if you had non-standard children loads, and you had params in your load, then you would need to call:
treeStore.getProxy().load({
  params: {
    node: rootNodeId
  }
});
0 голосов
/ 23 октября 2011

Вы можете перезагрузить дерево, используя прокси памяти. См. Ответ в Как обновить вложенный список / хранилище деревьев в Sencha Touch?

0 голосов
/ 23 августа 2011

У TreePanel нет магазина, подобного JsonStore.Он автоматически показывает все узлы и перезагружается при необходимости.

Если ваш rootNode (rightPaneStoreData) имеет значение AsyncTreeNode (загружается через AJAX), вы можете использовать:

rightPaneStoreData.reload()
(поскольку rightPaneStoreData является вашим корневым узлом).

или альтернативно (более обобщенно):
tree.root.reload();
(где дерево - это ссылка на ваше дерево)

Если это не ASyncTreeNode, вам придется сделать это вручную.Снова вызовите функцию getFolderListData() и назначьте новый корень для дерева.(tree.setRootNode()) * * тысяча двадцать две

...