2012-02-09 59 views
1

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

我使用下面的代码库:

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

回答

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()。 See als http://wwWendt.de/tech/dynatree/doc/dynatree-doc.html#h5.5.1

+0

如果他这么说的话,一定是这样,他写了这个插件。 – 2012-02-09 18:26:04

+0

是的你是正确的Mar10。在重新格式化json之后,节点正确显示。谢谢。 Anirban – Anirban 2012-02-10 04:04:53

0

如果这只是发生在你第一次把它再有就是你没有做的事情。这不是JSON的问题。