2013-07-09 50 views
1

你好,我使用分机的版本:4.2.0.663
我想重新加载在我的TreePanel中的数据,但我有两个问题:的ExtJS TreePanel中store.load()问题

*第一问题是我不能禁用自动加载
----第一个是固定的 - 你需要设置store.root.expanded ----

*第二问题是,当我试图制作“treeview.store.load();”它重新加载数据,但儿童失踪,当我尝试点击合拢父带出了这个错误:
遗漏的类型错误:无法调用空
EXT-全dev.js的方法“insertSibling”: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中会自动加载数据(即使是自动加载:假),一切都很好,但是当我尝试使treepanel.store()。load()发生第二个错误。
在这两种情况下是从PHP返回的数据是绝对相同的(也是头 - 我的意思是2个相同的请求)

+0

看起来你的数据是错误的。从php显示JSON。 – Damask

+0

不用数据是好的,实际上我找到了解决方案。我将添加它作为答案。 – T1000

+0

你能解释你如何解决第二个问题吗?我似乎有同样的问题。 (在第二次加载时,我的树的孩子不见了 - 只显示了顶级节点)。 –

回答

2

重装前子节点,它需要做的根节点崩溃,所以在此刻我这样做,一切都OK:

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中假