如何在TreePanel中插入新记录(模型)?

如何在TreePanel中插入新记录(模型)?,tree,store,extjs4,Tree,Store,Extjs4,我使用TreeStore和TreePanel。我需要在我的树中插入新节点,如何执行此操作 我有TreeStore组件,该组件具有以下配置: var monPrestore = Ext.create('Ext.data.TreeStore', { folderSort : true, model : 'Task', proxy : { model : 'Task', appendId: true, type : 'ajax',

我使用
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);          
}

非常感谢:)

我想你问了类似的问题

树面板没有插入方法。您必须获得树的根节点才能修改树。在您的情况下,您可能必须执行以下操作:

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

有关其他树操作方法,请参阅的API文档。

哦,是的,我没有看到我的主题!我理解你的示范。但我的新问题是,如果我想在一片叶子之后插入?我不知道这是否可能?我需要添加时,我双击叶。对于dblclick事件,我有一个参数'index',我想在index+1处添加,你一定是在开玩笑!!如果可以添加子节点,为什么要创建节点叶?好的,现在如果你坚持你需要这样做,你将不得不删除现有的节点,创建一个新的父节点并将你的子节点插入其中。不,我不是开玩笑的!很抱歉,我的情况是,当我点击项目(无叶)时添加叶是成功的,但现在我需要在相同级别上单击叶时添加叶。当它是叶子和不是叶子时,行为是不一样的?我在文档中看到,有一些方法可以替换Leaf!很抱歉,如果我不明白你的意思…那么这是你唯一的选择。。删除节点并创建新节点及其子节点。因此,使用remove、insertChild和appendchild我已经解决了我的问题:
var papa=node.parentNode;var rechild=papa.insertBefore({task:'',material:'',cc:'',start\u date:'',short\u desc:'description',id:'',leaf:true},node);var renode=papa.replaceChild(rechild,node);var测试=插入前(雷诺德,再灌注)