1

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

*第一个问题是我不能禁用 autoLoad
---- 第一个是固定的 - 你需要将store.root.expanded设置为false ----

*第二个问题是当我尝试制作“treeview.store.load();”时 它重新加载数据,但孩子们丢失了,当我尝试点击折叠时,父母会出现这个错误:未捕获的类型错误:
无法调用 null
ext-all-dev.js:158815的方法“insertSibling”

这就是我创建树形面板的方式:

{
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 个相同的请求)

4

1 回答 1

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

于 2013-07-10T07:00:38.590 回答