2013-07-09 4 views
1

Здравствуйте, я использую версию Ext: 4.2.0.663
Я пытаюсь перезагрузить данные в моей TreePanel, но у меня есть две проблемы:Extjs TreePanel store.load() проблемы

* первая проблема, я не может отключить автозагрузку
---- первые исправленная - вам необходимо установить store.root.expanded к ложной ----

* 2 проблемы в том, что, когда я пытаюсь сделать "treeview.store.load();" она перезагружает данные, но дети не хватает, и когда я пытаюсь нажать, чтобы свернуть родительская выявляет эту ошибку:
Uncaught TypeError: Невозможно вызвать метод «insertSibling» в нуль
Ext-все-dev.js: 158815

Это, как я создаю TreePanel:

{ 
xtype:'treepanel', 
region:'west', 
width:200, 
dockedItems:[ 
    { 
     xtype: 'toolbar', 
     dock: 'top', 
     id: 'msgToolbar', 
     style: 'font-weight:bold', 
     items: [ 
      { 
       xtype: 'button', 
       text:'Add new tab', 
       iconCls:'button-add' 
      } 
     ] 
    } 
], 
store: Ext.create('Ext.data.TreeStore', { 
    autoLoad: false, 
    proxy: { 
     type: 'ajax', 
     url: 'path to controller', 
     extraParams : { 
      launch:'functionName' 
     } 
    }, 
    root: { 
     text: 'Tabs', 
     expanded: true 
    }, 
    folderSort: true, 
    sorters: [{ 
     property: 'text', 
     direction: 'ASC' 
    }] 
}) 

}

Когда я перезагрузить страницу, TreePanel автоматически загружать данные (даже автозагрузку: false), и все в порядке, но когда я пытаюсь сделать treepanel.store(). load(), возникает вторая ошибка.
В обоих случаях данные, возвращаемые из PHP абсолютно то же самое (и заголовок - я имею в виду 2 одинаковых запросов)

+0

Похоже, что данные неверны. Показать JSON с php. – Damask

+0

Нет данных, и я нашел решение. Я добавлю это как ответ. – T1000

+0

Не могли бы вы объяснить, как вы решили вторую проблему? Кажется, у меня такая же проблема. (при втором загрузке дети моего дерева отсутствуют - показаны только узлы верхнего уровня). –

ответ

2

Перед повторной загрузкой дочерних узлов он должен сделать коллапс на корневом узле, поэтому на данный момент Я делаю это, и все в порядке:

treepanel.collapseAll(function(){ 
    treepanel.store.proxy.extraParams.record_id = record.get('record_id'); 
    treepanel.store.load({ 
     callback: function(records, operation, success) { 
      treepanel.expandAll(); 
     }        
    }); 
}); 

Если вы не хотите, чтобы увидеть «развернуть/свернуть» анимации вы можете установить enableAnimations: ложные на TreePanel.

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