Ext4重新加载树

时间:2012-03-16 13:54:57

标签: javascript extjs tree reload

我是EXT的新手,我在重新加载EXT 4树时遇到问题。我一直在尝试:

Ext.tree.getLoader().load(tree.root);
Ext.tree.load(tree.root);
Ext.tree.getRootNode().reload();
Ext.tree.TreePanel.root.reload();
Ext.data.TreeStore.reload();

没有任何帮助,我希望有人可以向我澄清这一点,这里是代码: 编辑:我已经添加了完整的代码,因为你可以看到所有内容都在extOnReady方法中,我在var树之前删除了var但仍然得到了相同的结果

Ext.QuickTips.init();

var store = Ext.create('Ext.data.TreeStore',{
    proxy: {
        type: 'ajax',
        url: 'url1'
    },
    root: {
        text: 'TOPP',
        id: '1',
        expanded: true
    },
    folderSort: true,
    sorters: [{
        property: 'text',
        direction: 'ASC'
    }]
});

tree = Ext.create('Ext.tree.Panel',{
    id:'company_tree',
    store: store,
    viewConfig: {
        plugins: {
            ptype: 'treeviewdragdrop'
        }
    },
    renderTo: 'tree-div',
    height: 300,
    width: 766,
    title: gettext('Companies'),
    useArrows: true,
    dockedItems: [{
        xtype: 'toolbar',
        items: [ {
            text: gettext('Collapse All'),
            handler: function(){
                tree.collapseAll();
            }
        }]
    }]
});
var loadingMask = new Ext.LoadMask(Ext.get('tree-div'),{
    msg: gettext("Loading...")
});

tree.on('itemmove', function(tree, oldParent, newParent, index, options){

    if(confirm(gettext('Are you sure you want to move this company?'))){
        loadingMask.show();
        Ext.Ajax.request({
            scope: this,
            url: 'url2/',
            success:function(){
                loadingMask.hide();
            },
            params: {
                'ajaxAction[moveNode]':  '',
                index: index,
                nodeid: tree.data.id,
                parentNodeID: newParent.data.id,
                oldParentNodeID: oldParent.data.id
            }
        });
    }else{
        Ext.getCmp('company_tree').getStore.load();
    }
});

我也尝试通过控制台重新加载[Ext.getCmp('company_tree')。getStore.load();]并且它有效。当我通过代码尝试它时,它会返回关于fly函数的错误

n is null
[Break On This Error]   

Ext.fly(n.firstChild ? n.firstChild : n).highlight(me.dropHighlightColor);

1 个答案:

答案 0 :(得分:2)

您是否真的想直接在Ext.tree命名空间或Ext.tree.TreePanel类上调用这些方法?如果是这样,你真的需要了解对象和类之间的区别。

不要只是试图猜测一个方法可能被命名。如果你从manual查找它,你会发现在Tree,TreeStore或TreeView上没有reload这样的方法。

重新加载树需要调用的是TreeStore的load方法:

tree.getStore().load();