0

我有一个巨大的树视图要绑定,所以需要渲染所有的父母,然后在展开时渲染孩子。如何在扩展剑道树视图上加载子节点?

我看过下面的线程,但不确定“节点”和“HasNodes”的引用来自他的上一篇文章中说问题已解决。

感谢帮助。

如何在扩展剑道树视图上加载子节点

4

1 回答 1

2

在过去的几天里,我自己一直在玩这个......

首先,您需要定义一个方法,该方法允许您传递节点 ID(您正在扩展的节点)或 null 如果获取根节点并返回节点对象列表。

配置树视图时,请确保您没有将模型设置为使用 'children' 字段 - 这会出于某种原因阻止任何按需加载并将 loadOnDemand 设置为 true(无论如何这是默认设置)。

设置完成后,您需要配置 transport.read.data 以获取节点的 id 并将其传递给您的方法调用。

在我的示例中,我将树模型定义为具有 ItemId、ItemName、HasChildItems 和 ParentTreeId 属性的对象。

将 HasChildItems 设置为 true 可确保扩展功能可用于节点。

例子:-

演示配置

// the Datasource
var demoDataSource= new kendo.data.HierarchicalDataSource({
            transport: {
                read: {
                    url: urlforyouraction_dataretrieval,
                    cache: false,
                    type: 'POST',
                    dataType: "json",
                    traditional: true,
                    data: function (e) {
                        return {
// e is the node passed in, this is null on initial read
                            ParentTreeId: !e.id ? null : e.id
                        }
                    }
                }
            },
            schema: {
                model: {
                    id: "ItemId",
                    Name: "ItemName",
                    hasChildren: "HasChildItems",
                    parentTreeId: "ParentTreeId"
                }
            }
        });

    // the treeview
    var demoTree = $("#treeview-left").kendoTreeView({
                loadOnDemand: true,
                dataSource: demoDataSource,
                dataTextField: "ItemName"
            }).data("kendoTreeView");
于 2015-01-23T06:20:49.267 回答