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を実行する他の例はありませんでした。

ここに画像の説明を入力してください


編集:

使用の混乱の理由はstore.destroy(record)Ext.data.Storeにはメソッドremove(record)がありますが、 Ext.data.TreeStoreにはないことに注意してください。また、破壊するための簡単なアプローチはではrecord.destroy()なくですrecord.remove(true)

ただし、またはを実行するとエラーが発生することに注意してrecord.destroy()くださいrecord.remove(true)。おそらく、ストアはJSONとして送信するノードを保持する必要があるため、record.remove()代わりに使用します。

4

1 に答える 1

13

ツリーストアにはdestroyメソッドがありません。レコードはツリーストアからのものであるため、ノードインターフェイスで装飾されています。したがって、removeメソッドを使用します(オプションのdestroyを使用)。

    var record = tree.getSelectionModel().getSelection()[0];
    record.remove(true);
    store.sync();
于 2012-09-19T15:01:59.780 に答える