2013-04-05 79 views
0

我的Kendo UI TreeView没有获取添加到树视图的返回JSON对象。Kendo UI KendoTreeView HierarchicalDataSource未显示节点

我可以从JSON的被提供给数据源被调用控制器方法看是这样的(但更多的文件和文件夹)

{"NodeID":-842352767, "Name":"/", "Folders":[{"NodeID":1804712307,"Name":"/$Recycle.Bin","Folders":null,"Files":null},{"NodeID":-582712839,"Name":"/Windows","Folders":null,"Files":null}], "Files":["/.rnd","/msdia80.dll"]}

我的看法如下:

@model ProjName.Models.BrowseNode 

<div id ="wrapper"> 
<h1>Browser</h1> 
<div id="treeview" style="float:left;margin: 40px;"> 
</div> 
</div> 
<script> 
function populateTreeView() { 
    var remoteDataSource = new kendo.data.HierarchicalDataSource({ 
     type: "json", 
     transport: { 
      read: "FileBrowser/GetHierarchy" 
     }, 
     schema: { 
      model: { 
       id: "NodeID", 
       text: "Name", 
       expanded: false, 
       children: "Folders", 
      }, 
     } 
    }); 

    $("#treeview").kendoTreeView({ 
     dataSource: remoteDataSource, 
     dataTextField: "Name" 
    }); 
} 

$(document).ready(function() { 
    populateTreeView(); 
}); 

随着BrowseNode定义为:

public class BrowseNode 
{ 
    public int NodeID { 
     get 
     { 
      if (null == Name) 
       return default(int); 
      return Name.GetHashCode(); 
     } 
    } 
    public string Name { get; set; } 
    public List<BrowseNode> Folders { get; set; } 
    public List<string> Files { get; set; } 
} 

任何明显错误或任何提示调试这种事情?

回答

1

原来我的JSON不是DataSource想要的。它应该是一个数组在顶层返回,所以JSON由括号[]如下包围:

[{"NodeID":-842352767, "Name":"/", "Folders":[{"NodeID":1804712307,"Name":"/$Recycle.Bin","Folders":null,"Files":null},{"NodeID":-582712839,"Name":"/Windows","Folders":null,"Files":null}], "Files":["/.rnd","/msdia80.dll"]}]

+0

你如何改变你的JSON,能否请您详细些吗? – 2013-07-21 06:04:30

+0

我的孩子(你的文件夹)显示为undefined! – 2013-07-21 06:04:59

+0

听起来像一个不同的问题。我必须改变的是从json对象到它预期的json数组。也就是从'{'parent':1}'到'[{'parent':1}]' – James 2013-07-21 13:28:50