1

我有一个从 ASP.NET MVC3 控制器加载数据的 Dynatree。对于第一次调用,树需要加载数据,然后树必须按需加载(延迟加载)。我面临的问题是第一次,当数据从控制器返回到树上时,数据没有正确显示。基本上节点名称将变为 NULL。但我检查了控制器是否正确返回数据。如何格式化在客户端收到的数据。

我正在使用以下代码库:

treeElement.dynatree({
            title: "Lazy loading sample",
            fx: { height: "toggle", duration: 200 },
            autoFocus: false, 
            initAjax: {
                url: "/DataManager/ViewNodes",
                data: { mode: 'all' }
                //Here after I receive the data, how do I show the nodes ?? 
            },

            onActivate: function (node) {
                alert(node.getKeyPath());
            },

            onLazyRead: function (node) {

                node.appendAjax({
                    url: ""
                });
            }
        });

从控制器返回的 json 具有以下结构:

 [

  {"ChildNodes":     [],"Parent":null,"Type":9,"HasRaps":false,"HasReports":false,"TotalChildCount":0,"NodePaths":null,"ID":2,"Name":"Omega",},

 {"ChildNodes":[{"ChildNodes":          [],"Parent":null,"Type":0,"HasRaps":false,"HasReports":false,"TotalChildCount":0,"NodePaths":null,"ID":0,"Name":"LoadingData..."}],"Parent":null,"Type":8,"HasRaps":false,"HasReports":false,"TotalChildCount":1,"NodePaths":null,"ID":14,"Name":"PARIS"}
 ]

谁能帮忙。

谢谢, 阿尼尔班

4

2 回答 2

1

dynatree 回调initAjaxappendAjax期望特定格式的 JSON 数据,例如

[
    {"title": "Item 1"},
    {"title": "Folder 2", "isFolder": true, "key": "folder2",
        "children": [
            {"title": "Sub-item 2.1"},
            {"title": "Sub-item 2.2"}
            ]
        },
    {"title": "Folder 3", "isFolder": true, "key": "folder3",
        "children": [
            {"title": "Sub-item 3.1"},
            {"title": "Sub-item 3.2"}
            ]
        },
    {"title": "Lazy Folder 4", "isFolder": true, "isLazy": true, "key": "folder4"},
    {"title": "Item 5"}
]

如果你不能提供这个,那么你可以使用标准的 jQuery.ajax 调用,重新格式化结果并调用 node.addChild()。另见http://wwWendt.de/tech/dynatree/doc/dynatree-doc.html#h5.5.1

于 2012-02-09T18:01:49.033 回答
0

如果这只是在你第一次调用它时发生,那么你没有做一些事情。这不是json的问题。

于 2012-02-09T08:04:18.850 回答