Ext4 перезагрузить дерево - PullRequest
0 голосов
/ 16 марта 2012

Я новичок в 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 Ответ

2 голосов
/ 16 марта 2012

Вы действительно пытаетесь вызвать эти методы непосредственно в Ext.tree пространстве имен или Ext.tree.TreePanel классе? Если это так, вам действительно нужно научиться понимать разницу между предметами и классами.

И не пытайтесь угадать, как метод может быть назван. Если бы вы посмотрели его из руководства , вы бы обнаружили, что в Tree, TreeStore или TreeView нет такого метода, как reload.

Для перезагрузки дерева необходимо вызвать метод load TreeStore:

tree.getStore().load();
...