2011-05-24 10 views
5

Yo uso TreeStore & TreePanel. Necesito insertar un nuevo nodo en mi árbol, ¿cómo hacer esto?¿Cómo insertar un nuevo registro (modelo) en TreePanel?

tengo TreeStore componente que config siguientes:

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' 
     }, 
    } 

he definido Tarea modelo (que es lo que yo quiero insertar) con el valor en blanco:

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' 
     } 
    ] 
}); 

quiero insertar nuevo récord cuando se desencadena el evento itemdlclick:

Lo he probado pero no funciona:

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);   
} 

Muchas gracias :)!

Respuesta

9

Creo que usted hizo la pregunta similar here!

No hay un método de inserción para el panel de árbol. Deberá obtener el nodo raíz del árbol para modificar el árbol. En su caso, puede que tenga que hacer lo siguiente:

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

Para otros métodos de manipulación de árboles, consulte la documentación de la API de NodeInterface.

+0

¡Oh, sí, no veo mi tema! Tengo entendido, su demostración. pero mi nueva problemática si cuando quiero insertar justo después de una hoja? No sé si es posible? Necesito agregar cuando hago doble clic en la hoja. Con el evento dblclick tengo el parámetro 'index', quiero agregar al índice + 1 – Mepps

+0

, ¡debes estar bromeando! ¿Por qué creas una hoja de nodo si puedes agregar un nodo hijo? bien, ahora si insiste que lo necesita, deberá eliminar el nodo existente, crear un nuevo padre e insertarlo en él. –

+0

¡No, no te estoy engañando ...! Lo siento En mi caso, es un éxito agregar hoja cuando hago clic en proyecto (sin hoja) pero ahora tengo que agregar cuando hago clic en una hoja en el mismo nivel. ¿El comportamiento no es el mismo cuando es hoja y no hoja? Veo en el documento, hay métodos para reemplazar las hojas! Lo siento si no te entiendo ... – Mepps

Cuestiones relacionadas