2012-09-19 22 views
8

Podjęto próbę użycia tego przykładu i dodania podstawowego CRUD do drzewa.Jak usunąć elementy z drzewa

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

Na razie, po prostu chcę, aby usunąć element z drzewa. Dodałem przycisk i kliknę go:

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

Sprawdziłem, czy istnieje zapis i sklep. Magazyn jest typu TreeStore, jak w przykładzie. Jeśli sprawdzę wysyłane żądanie, jest to tylko []. Obecnie wszystko, co mam w swoim proxy, to:

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

Kliknięcie Usuń nie powoduje usunięcia aktualnie wybranego elementu. Czy muszę ustawić odpowiedni zniszczony adres URL w proxy i dlaczego nie przesyła żadnych informacji o tym, co należy usunąć w nagłówku żądania? Nie było innych przykładów robienia CRUD z drzewa, które mogłem znaleźć.

enter image description here


EDIT:

Zauważ, że powodem zamieszania było to, że za pomocą store.destroy(record)Ext.data.Store ma metodę remove(record) ale Ext.data.TreeStore nie. Ponadto, skrótowe podejście do niszczenia to record.destroy(), a nie record.remove(true).

Pamiętaj jednak, że otrzymałem błędy: record.destroy() lub record.remove(true). Przypuszczalnie sklep musi zachować węzły, które będą wysyłane jako JSON, więc zamiast tego użyj record.remove().

Odpowiedz

13

Magazyn drzew nie ma metody niszczenia. Ponieważ płyta pochodzi z trestore, jest ozdobiona plakietką node interface. Tak więc użyj metody remove (z opcjonalnym destroy).

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

Dzięki, głupi błąd z mojej strony :) Mogę także zobaczyć usunięty element z 'store.getRemovedRecords()' przed jego wysłaniem do proxy. –

+3

Użyłem 'record.remove()' w przeciwnym razie dało błędy. –

Powiązane problemy