Ho tentato di utilizzare questo esempio e di aggiungere CRUD di base a un albero.Come eliminare elementi da un albero
http://dev.sencha.com/deploy/ext-4.0.0/examples/tree/treegrid.html
Per ora, voglio solo eliminare un elemento dall'albero. Ho aggiunto il pulsante e ho questo sotto clic:
click : function() {;
var record = tree.getSelectionModel().getSelection()[0];
store.destroy(record);
store.sync();
}
Ho verificato la registrazione e il negozio esistono. Il negozio è di tipo TreeStore come nell'esempio. Se controllo la richiesta inviata, è solo []
. Tutto ciò che ho nel mio proxy al momento è questo:
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
});
Fare clic su Elimina non rimuove l'elemento attualmente selezionato. Devo impostare un URL di distruzione appropriato nel proxy e perché non invia alcun dettaglio su ciò che deve essere eliminato nell'intestazione della richiesta? Non c'erano altri esempi di CRUD da un albero che potessi trovare.
EDIT:
nota che la ragione per la confusione di utilizzare store.destroy(record)
era che Ext.data.Store ha un metodo remove(record)
ma Ext.data.TreeStore no. Inoltre, un approccio alla distruzione breve è record.destroy()
anziché record.remove(true)
.
Nota tuttavia che ho ricevuto errori facendo record.destroy()
o record.remove(true)
. Presumibilmente lo store deve conservare i nodi da inviare come JSON, quindi utilizzare record.remove()
.
Grazie, stupido errore da parte mia :) Posso anche vedere l'elemento eliminato con 'store.getRemovedRecords()' prima che venga inviato al proxy. –
Ho usato 'record.remove()' altrimenti ha dato errori. –