2012-09-19 11 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


EDIT:

store.destroy(record)を使用しての混乱の理由はExt.data.Storeの方法remove(record)を持っているということでしたが、Ext.data.TreeStoreないこと。また、破棄の簡略化アプローチはrecord.remove(true)ではなくrecord.destroy()です。

ただし、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()'を使用しました。それ以外の場合はエラーが発生しました。 –

関連する問題