Как вставить новую запись (модель) в TreePanel? - PullRequest
5 голосов
/ 24 мая 2011

Я использую TreeStore & TreePanel.Мне нужно вставить новый узел в мое дерево, как это сделать?

У меня есть TreeStore компонент, который следует конфигурации:

var monPrestore = Ext.create('Ext.data.TreeStore', {
    folderSort : true,
    model : 'Task',
    proxy : {
        model : 'Task',
        appendId: true,
        type : 'ajax',
        url : '/intranet-timesheet2-tasks-extjs/getJSON.tcl',
        reader : {
            type : 'json'
        },
        writer : {
            type : 'json'
        },
    }

Я определил модель задачи (это то, что я хочувставить) с пустым значением:

Ext.define('Task', {
    extend : 'Ext.data.Model',
    fields : [
        {
            name : 'task',
            type: 'string'
        },
        {
            name : 'material',
            type: 'string'
        },
        {
            name : 'cc',
            type: 'string'
        },
        {
            name : 'start_date',
            type: 'string'
        },
        {
            name : 'short_desc',
            type: 'string'
        },
        {
            name : 'id',
            type: 'string'
        }
    ]
});

Я хочу вставить новую запись при возникновении события itemdlclick:

Я проверил это, но оно не работает:

itemdblclick: function(view, model, htmlitem, index, e) {
    var task = {
        task: 't0',
        material: 'm0',
        cc: 'c0',
        start_date: '12',
        short_desc: 'sht',
        id: '120',
        leaf: true
    };

    monPretree.insert(4,task);          
}

Большое спасибо :)!

1 Ответ

9 голосов
/ 24 мая 2011

Я думаю, вы задали похожий вопрос здесь !

Не существует метода вставки для панели дерева. Вам нужно будет завладеть корневым узлом дерева, чтобы изменить дерево. В вашем случае вам, возможно, придется сделать следующее:

var rootNode = monPretree.getRootNode();
rootNode.insertChild(4,task); 

Для других методов управления деревом обратитесь к документации API NodeInterface .

...