2012-09-19 119 views
8

我試圖使用此示例並將基本CRUD添加到樹中。如何從樹中刪除項目

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

現在,我只想從樹中刪除項目。我已添加按鈕,並點擊此按鈕:

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

我已驗證記錄和商店存在。該例子中的商店是TreeStore類型的。如果我檢查發送的請求,它只是[]。所有我在我此刻的代理是這樣的:

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

點擊刪除不刪除當前選中的項目。我是否需要在代理中設置適當的銷燬URL,以及爲什麼它不發送關於請求頭中需要刪除的內容的任何細節?沒有其他的例子可以從我能找到的樹上做CRUD。

enter image description here


編輯:

需要注意的是,使用store.destroy(record)混亂的原因是Ext.data.Store有一個方法remove(record)Ext.data.TreeStore沒有。另外,銷燬的簡寫方法是record.destroy()而不是record.remove(true)

不過請注意,我收到這樣record.destroy()record.remove(true)錯誤。據推測,商店需要保留以JSON形式發送的節點,所以請改用record.remove()

回答

13

樹存儲沒有方法銷燬。 由於記錄來自樹庫,因此它的裝飾爲node interface。所以使用remove方法(使用可選的destroy)。

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

謝謝,我的部分愚蠢的錯誤:)我還可以在發送到代理之前用'store.getRemovedRecords()'看到已刪除的項目。 –

+3

我用'record.remove()',否則會給出錯誤。 –