2013-10-27 5 views
0

Я хочу изменить свой магазин динамически. У меня есть панель дерева extJs, как элемент window.widget. Я хочу динамически менять хранилище этой панели. Моя логика такова: Запрос aJax отправляется на мой контроллер и возвращает jsonObject cotroller. Я хочу установить этот jsonObject, который возвращает мой контроллер, чтобы быть НОВЫМ магазином моей панели дерева, и обновить только панель дерева. Это то, что я сделал до сих пор, но динамическое изменение не работает. Пожалуйста, имейте в виду, что мой json-объект, который используется для хранения, создается и живет в памяти. Все работает нормально до тех пор, пока не появится новый магазин, и дерево не получит магазин таким образом, который я попробую.ExtJs, как динамично менять хранилище treepanel

Мой магазин:

var store = Ext.create('Ext.data.TreeStore', { 
    root: { 
     id: 'rootNode', 
     expanded: true, 
     children: childrenParam 
    } 
}); 

и мой TreePanel:

xtype: 'treepanel', 
region: 'west', 
id: 'navigation', 
title: 'Tree of builds', 
width: "30%", 
height: "100%", 
layout: 'fit', 
rootVisible: false, 
store: store, 
split: true, 
autoScroll: true, 
collapsible: true, 
floatable: false 
... 

То, что я попытался это:

var myPanel = Ext.getCmp('navigation'); 
myPanel.store.tree.root.childNodes = result; 

, где результатом является JSON объект, который является возвращение из шахты контроллера , Этот json-объект прекрасен, но смена магазина работает некорректно.

Заранее благодарю за помощь!

ответ

4

Надеется, что это помогает:

treePanel.reconfigure(myNewStore, newStoreCols); 

, а затем вы должны вызвать этот код:

myNewStore.setRootNode(myNewStore.getRootNode()); 
+0

Спасибо Раджиндера! – user2739823

0

Вам также использовать Ext.getCmp('treepanelId').setStore(myNewStore);

Смежные вопросы