Dojo - Dijit.Tree - 更新树

Posted

技术标签:

【中文标题】Dojo - Dijit.Tree - 更新树【英文标题】:Dojo - Dijit.Tree - Updating Tree 【发布时间】:2012-02-23 07:10:37 【问题描述】:

我基于由 ItemFileWriteStore 支持的 TreeStoreModel 创建了一个简单的树。 我尝试通过删除项目并将项目添加到商店来更新我的树,如下所示,但不能。

dojo.require("dojo.data.ItemFileWriteStore");
dojo.require("dijit.Tree");
dojo.addOnLoad(function () 
    var tmpData = [
            "name" : "Dell",
            "type" : "business",
            "businessid" : "1",
            "projectid" : "1",
            "submenu" : [
                    "name" : "OTP",
                    "type" : "product",
                    "productid" : "100"
                
            ]
        
    ];

    var tmpData1 = [
            "name" : "Lenovo",
            "type" : "business",
            "businessid" : "1",
            "projectid" : "1",
            "submenu" : [
                    "name" : "OTP",
                    "type" : "product",
                    "productid" : "100"
                
            ]
        
    ];
    var store = new dojo.data.ItemFileWriteStore(
            data : 
                label : 'name',
                items : tmpData
            
        );

    var treeModel = new dijit.tree.TreeStoreModel(
            store : store,
            query : 
                type : 'business'
            ,
            childrenAttrs : ["submenu"]

        );

    var divTestTree = dojo.create("div", null, dojo.body(), "first");
    var mytree = new dijit.Tree(
            model : treeModel
        ,
            divTestTree);
    /* Tree is created at this point */

    /* Delete the item from the store,  for some reason tempData is being reset*/
    store.deleteItem(tmpData[0]); 
    /* save */
    store.save();
    /* Tree shows up no more at this point */

    /* Try adding new item to the store */
    store.newItem(tmpData1[0]);
    /* save */
    store.save();
    /*nothing happens! */   
);

我跟随here 的领导,我一定错过了一些非常微不足道的东西。请帮忙。

【问题讨论】:

【参考方案1】:

对于任何来这里寻找解决方案的人来说,“我怀疑有一个错误”是我在论坛上得到的唯一答案,所以这可能是一个错误 - goo.gl/M7xg7

【讨论】:

【参考方案2】:

取自该页面

如何刷新商店中的树?

不支持。商店需要将数据的任何更改通知树。目前,这实际上只有 dojo.data.ItemFileWriteStore 支持(开箱即用),因为设置客户端-服务器 dojo.data 源,服务器在数据发生更改时通知客户端非常复杂,超出了dojo,这是一个仅限客户端的解决方案。

更新树的唯一方法是重新绘制它:(

【讨论】:

OP 正在使用 itemFileWriteStore @7dr3am7 - 我正在使用 ItemFileWriteStore,那里的文档有点混乱......根据这里的文档dojotoolkit.org/reference-guide/dojo/data/… - 对商店的更改反映在树中,不确定 addItem。 .. 对于任何来这里寻找解决方案的人来说,“我怀疑有一个错误”是我在论坛上得到的唯一答案,所以这可能是一个错误 - goo.gl/M7xg7跨度>

以上是关于Dojo - Dijit.Tree - 更新树的主要内容,如果未能解决你的问题,请参考以下文章

dojo创建tree

带有提交错误值的单选按钮的 Dijit.tree 扩展

Dojo Gridx 程序刷新显示没有数据

使用“之前”选项将项目添加到道场商店

dijit.Tree 重新加载时不会崩溃

在 dijit.Tree 中搜索