3

Treepanel1秒に 1 回更新されるを作成したいと思います。そこで、データ取得用のプロキシを使用してストアを作成しました。

store = new Ext.data.TreeStore({
    model: 'TaskState',
        proxy: {
        type: 'ajax',
        url : '/getTaskList'
},
    root: {
        expanded: true
}});

ストアは動作しているようで、データは my に表示されますTreePanel

Treepanelこの関数でを更新しようとしました:

function refresh(){
        store.load();
        window.setTimeout("refresh()", 1000);
    }

アップデートも有効のようです。残念ながら、この更新では、ツリー全体がリロードされるため、更新のたびにある種の「点滅」効果が発生します。変更されたノードのみを更新する方法を探しています。

これを行う方法はありますか?

挨拶

4

4 に答える 4

2

新しいノードを追加したいが、ストア全体をリロードしたくない場合は、次のように追加できます

 //overModel is Ext.data.Model
 overModel.appendChild({
                        id: responseJson.data['id'],
                        text:responseJson.data['text'],
                        children:responseJson.data['children'],//array of childern
                        parent_id:responseJson.data['parent_id']

  });
  overModel.expand();

ストア全体をロードしたい場合は、次のようにすることができます

Ext.data.StoreManager.lookup('StoreName').load({ params: {"p1": p1}});

ストアをロードします。ストアを定期的に更新するには、DelatedTaskクラスを使用できます。

詳細については、EXTJSのドキュメント APIを参照してください。

于 2012-05-08T13:05:36.437 に答える
2

1 つの方法があります。ノードを一時ストアにロードし、メイン ツリーのストア ノードをノードごとに変更することができます。

于 2011-04-20T21:24:36.220 に答える
1

Store はグリッドとストアのように Treepanel をバインドするため、ツリー パネルから Store を取得することができます。

var store=treepanel.getStore()

更新が必要なブランチでストアをリロードできます

store.load({node:selectedNode})
于 2013-12-18T10:05:43.943 に答える
0

そのためにTaskManagerを使用できます:

Ext.TaskManager.start({
    run: reloadStoreFunction,
    interval: 1000
});

これにより、reloadStoreFunction が毎秒実行されます。

于 2012-11-26T22:14:16.100 に答える