Kendo Tree视图 - 如何在扩展kendo树视图上加载子节点

时间:2015-01-21 19:36:58

标签: razor kendo-ui treeview kendo-treeview kendo-ui-mvc

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

我看了下面的帖子,但不确定" Node"的引用在哪里?和#34; HasNodes"来自他的上一篇文章,说问题解决了。

感谢帮助。

How to load child node on expand kendo treeview

1 个答案:

答案 0 :(得分:2)

过去几天我一直在玩这个...

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

配置树视图时,请确保您没有将模型设置为使用'children'字段 - 这可以防止因某种原因加载任何ondemand并将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");