2011-05-24 48 views
5

我使用TreeStore & TreePanel。我需要在我的Tree中插入新节点,如何做到这一点?如何在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);   
} 

非常感谢!:)

回答

9

我想你问类似的问题here

树面板没有插入方法。您将不得不抓住树的根节点来修改树。在你的情况,你可能必须做到以下几点:

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

对于其他树的操作方法,请参阅的NodeInterface API文档。

+0

哦,是的,我没有看到我的话题! 我明白了,你的演示。但我的新问题,如果当我想插入一片叶子​​后?我不知道是否有可能? 我需要添加时,我双击叶。 随着dblclick事件我有参数'索引',我想添加在索引+ 1 – Mepps 2011-05-24 15:45:18

+0

你一定在开玩笑我!如果你可以添加一个子节点,你为什么要创建一个节点叶?好的,现在如果你坚持你需要这种方式,你将不得不删除现有的节点,创建一个新的父节点并将你的孩子插入它。 – 2011-05-24 17:00:21

+0

不,我不是在开玩笑...!所以对不起 我的情况下,它的成功添加叶当我dlbclick项目(无叶),但现在我需要添加当我点击一个叶在同一级别。 当它是叶而不是叶时,行为是不一样的? 我在文档中看到,有方法取代叶子! 对不起,如果我不明白你... – Mepps 2011-05-24 17:05:21

相关问题