2012-09-19 27 views
8

He intentado utilizar este ejemplo y agregar CRUD básico a un árbol.Cómo eliminar elementos de un árbol

http://dev.sencha.com/deploy/ext-4.0.0/examples/tree/treegrid.html

Por ahora, sólo quiero eliminar un elemento del árbol. He agregado el botón y tengo esto debajo de clic:

click : function() {; 
    var record = tree.getSelectionModel().getSelection()[0]; 
    store.destroy(record); 
    store.sync(); 
} 

He verificado que el registro y la tienda existen. La tienda es de tipo TreeStore como en el ejemplo. Si verifico la solicitud que se envía, es solo []. Todo lo que tengo en mi proxy en este momento es este:

var store = Ext.create('Ext.data.TreeStore', { 
    storeId : 'treeStore', 
    model : 'Task', 
    proxy : { 
     type : 'ajax', 
     // the store will get the content from the .json file 
     url : '../resources/data/treegrid.json' 
    }, 
    folderSort : true 
}); 

Al hacer clic en eliminar no se elimina el elemento seleccionado actualmente. ¿Tengo que configurar una URL de destrucción adecuada en el proxy y por qué no está enviando ningún detalle sobre lo que se debe eliminar en el encabezado de la solicitud? No hubo otros ejemplos de hacer CRUD de un árbol que pude encontrar.

enter image description here


EDIT:

Tenga en cuenta que la razón de la confusión de la utilización de store.destroy(record) fue que Ext.data.Store tiene un método remove(record) pero Ext.data.TreeStore no. Además, un enfoque abreviado para destruir es record.destroy() en lugar de record.remove(true).

Sin embargo, tenga en cuenta que he recibido errores haciendo record.destroy() o record.remove(true). Presumiblemente, la tienda necesita retener los nodos para enviarlos como JSON, por lo tanto, use record.remove().

Respuesta

13

Tree store no tiene ningún método para destruir. Dado que el registro es de una arboleda, está decorado con un node interface. Entonces usa el método de quitar (con el destructor opcional).

var record = tree.getSelectionModel().getSelection()[0]; 
    record.remove(true); 
    store.sync(); 
+0

Gracias, error tonto de mi parte :) También puedo ver el elemento eliminado con 'store.getRemovedRecords()' antes de enviarlo al proxy. –

+3

Utilicé 'record.remove()' de lo contrario, dio errores. –

Cuestiones relacionadas