Dynatree используя asp.net mvc3 - PullRequest
       9

Dynatree используя asp.net mvc3

1 голос
/ 09 февраля 2012

У меня Dynatree, который загружает данные с контроллера ASP.NET MVC3. Для первого вызова дерево должно загружать данные, а затем по сторонам дерево должно загружаться по требованию (отложенная загрузка). Проблема, с которой я сталкиваюсь, заключается в том, что в первый раз, когда данные возвращаются из контроллера в дерево, данные не отображаются должным образом. В основном имена узлов идут как 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"}
 ]

Может кто-нибудь помочь.

Спасибо, Anirban

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Обратный вызов dynatree initAjax и appendAjax ожидает данные 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

0 голосов
/ 09 февраля 2012

Если это происходит только при первом вызове, значит, вы что-то не делаете.Это не проблема с JSON.

...