Extjs treepanel store.load()问题

时间:2013-07-09 12:21:04

标签: extjs store treepanel

您好我使用的是Ext版本:4.2.0.663
我正在尝试重新加载我的treepanel中的数据,但我有两个问题:

*第一个问题是我无法禁用autoLoad
---- 1st已修复 - 您需要将 store.root.expanded 设置为 false ----

*第二个问题是,当我试图使“treeview.store.load();”时,它会重新加载数据,但是孩子们丢失了,当我尝试点击折叠时父母提出这个错误:
未捕获的TypeError:无法调用null的方法'insertSibling' ext-all-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会自动加载数据(甚至autoLoad:false),一切正常,但是当我尝试生成treepanel.store()。load()时,会出现第二个错误。
在这两种情况下,从php返回的数据完全相同(也是标题 - 我的意思是2个相同的请求)

1 个答案:

答案 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:false