2014-11-21 83 views
2

我试图展示一个配置了远程数据的Kendo TreeView,但预先填充了直接从html加载的数据的前两个级别。在Kendo的PushCreate儿童节点HierarchicalDataSource

对于这一点,我想用的剑道的DataSource pushCreate方法将初始元素添加到树:

homogeneous = new kendo.data.HierarchicalDataSource({ 
    transport: { read: { url: serviceRoot + "/Employees", dataType: "jsonp" } }, 
    schema: { 
     model: { 
      id: "EmployeeId", 
      hasChildren: "HasEmployees" 
     } 
    } 
}); 

// Adding root 
homogeneous.pushCreate({"EmployeeId":2,"FullName":"Andrew Fuller","HasEmployees":true,"ReportsTo":null}); 

// Adding children 
homogeneous.pushCreate([ 
    {"EmployeeId":1,"FullName":"Nancy Davolio","HasEmployees":false,"ReportsTo":2}, 
    {"EmployeeId":3,"FullName":"Janet Leverling","HasEmployees":false,"ReportsTo":2}, 
    {"EmployeeId":4,"FullName":"Margaret Peacock","HasEmployees":false,"ReportsTo":2}, 
    {"EmployeeId":5,"FullName":"Steven Buchanan","HasEmployees":true,"ReportsTo":2}, 
    {"EmployeeId":8,"FullName":"Laura Callahan","HasEmployees":false,"ReportsTo":2} 
]); 

$("#treeview").kendoTreeView({ 
    dataSource: homogeneous, 
    dataTextField: "FullName" 
}); 

然而,元素添加到根级的孩子(你可以看到这运行here)。

有一个schema.model.children配置来设置保存子元素内的子元素的属性,我可以一次添加所有,但如果我使用它,那么dataSource将停止使用远程数据(您可以看到运行here )。

所以问题是,有没有办法使用pushCreate将元素添加为HierarchicalDataSource中另一个元素的子元素?

回答

0

我找到了答案,同时书面方式的问题:)

好像如果我只是使用items作为孩子的关键,我并不需要指定schema.model.children选项,树欲静与远程工作数据:

homogeneous.pushCreate(
    {"EmployeeId":2,"FullName":"Andrew Fuller","HasEmployees":true,"ReportsTo":null, 
     "items": [ 
      {"EmployeeId":1,"FullName":"Nancy Davolio","HasEmployees":false,"ReportsTo":2}, 
      {"EmployeeId":3,"FullName":"Janet Leverling","HasEmployees":false,"ReportsTo":2}, 
      {"EmployeeId":4,"FullName":"Margaret Peacock","HasEmployees":false,"ReportsTo":2}, 
      {"EmployeeId":5,"FullName":"Steven Buchanan","HasEmployees":true,"ReportsTo":2}, 
      {"EmployeeId":8,"FullName":"Laura Callahan","HasEmployees":false,"ReportsTo":2} 
     ] 
    } 
); 

Here's the working example

我不知道这是否是和意想不到的功能,但可用于将一个完整的子树添加到根(这解决了我的问题)。然而,问题仍然存在,我可以使用pushCreate将子元素添加到另一个?

+0

不幸的是,这是行不通的!第二级仍然从远程加载。当您更改HierarchicalDataSource的URL时,您会看到只有父项会被加载。 – leo 2015-08-21 15:11:12