首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新EXTJS 4 Treepanel周期

更新EXTJS 4 Treepanel周期
EN

Stack Overflow用户
提问于 2011-04-20 16:57:37
回答 4查看 3.4K关注 0票数 3

我想创建一个Treepanel,它每秒更新一次。所以我选择了一个带有数据获取代理的商店:

代码语言:javascript
复制
store = new Ext.data.TreeStore({
    model: 'TaskState',
        proxy: {
        type: 'ajax',
        url : '/getTaskList'
},
    root: {
        expanded: true
}});

商店似乎正常工作,数据显示在我的TreePanel中。

我尝试用这个函数更新Treepanel

代码语言:javascript
复制
function refresh(){
        store.load();
        window.setTimeout("refresh()", 1000);
    }

更新似乎也起到了作用。不幸的是,每次更新都会导致某种“闪烁”效果,因为整个树都会被重新加载。我正在寻找一种只刷新已更改的节点的方法。

有什么方法可以做到这一点吗?

问候

EN

回答 4

Stack Overflow用户

发布于 2011-04-21 05:24:36

有一种方法:您可以将节点加载到某个临时存储中,然后逐个节点地更改主树的存储节点

票数 2
EN

Stack Overflow用户

发布于 2012-05-08 21:05:36

如果您想要添加任何新节点,但又不想重新加载整个存储,则可以像这样添加

代码语言:javascript
复制
 //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将为您提供更多详细信息。

票数 2
EN

Stack Overflow用户

发布于 2013-12-18 18:05:44

Store类似于grid和store绑定Treepanel,因此您可以使用以下命令从树面板中获取Store

代码语言:javascript
复制
var store=treepanel.getStore()

并且您可以使用需要更新的分支重新加载存储

代码语言:javascript
复制
store.load({node:selectedNode})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5727834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档