PushCreate 在 Kendo HierarchicalDataSource 中创建子节点

Posted

技术标签:

【中文标题】PushCreate 在 Kendo HierarchicalDataSource 中创建子节点【英文标题】:PushCreate children nodes in Kendo HierarchicalDataSource 【发布时间】:2015-01-20 05:47:53 【问题描述】:

我正在尝试显示一个配置了远程数据的 Kendo TreeView,但使用直接从 html 加载的数据预填充前两个级别。

为此,我想使用 Kendo 数据源的 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 上另一个元素的子元素?

【问题讨论】:

【参考方案1】:

我在写问题时找到了答案:)

似乎如果我只是使用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 将子元素添加到另一个元素吗?

【讨论】:

不幸的是,这不起作用!第二级仍然从远程加载。当您更改 HierarchicalDataSource 的 url 时,您会看到只会加载父级。【参考方案2】:

您可以通过在节点元素后面附加append 来做到这一点。请参阅 Telerik 的此示例:http://dojo.telerik.com/AjIti/32

【讨论】:

以上是关于PushCreate 在 Kendo HierarchicalDataSource 中创建子节点的主要内容,如果未能解决你的问题,请参考以下文章

在Kendo窗口加载Kendo网格

Kendo网格填充在kendo标签条下

管理在另一个kendo分割器中调整kendo分割器的大小

如何在加载kendo-grid时显示kendo加载图标?

如何在 kendo.ui.grid 中创建自定义 kendo.ui.Window 以进行编辑

Kendo UI:Kendo 网格的惰性绑定