我想创建一个Treepanel,它每秒更新一次。所以我选择了一个带有数据获取代理的商店:
store = new Ext.data.TreeStore({
model: 'TaskState',
proxy: {
type: 'ajax',
url : '/getTaskList'
},
root: {
expanded: true
}});商店似乎正常工作,数据显示在我的TreePanel中。
我尝试用这个函数更新Treepanel:
function refresh(){
store.load();
window.setTimeout("refresh()", 1000);
}更新似乎也起到了作用。不幸的是,每次更新都会导致某种“闪烁”效果,因为整个树都会被重新加载。我正在寻找一种只刷新已更改的节点的方法。
有什么方法可以做到这一点吗?
问候
发布于 2011-04-21 05:24:36
有一种方法:您可以将节点加载到某个临时存储中,然后逐个节点地更改主树的存储节点
发布于 2012-05-08 21:05:36
如果您想要添加任何新节点,但又不想重新加载整个存储,则可以像这样添加
//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的Documentation API将为您提供更多详细信息。
发布于 2013-12-18 18:05:44
Store类似于grid和store绑定Treepanel,因此您可以使用以下命令从树面板中获取Store
var store=treepanel.getStore()并且您可以使用需要更新的分支重新加载存储
store.load({node:selectedNode})https://stackoverflow.com/questions/5727834
复制相似问题