Kendo Treeview with remote datasource issue

2019-08-03 01:44发布

I have the following code for my treeview. Everything is ok. I can use my tree: expand, collapse, drag items. But when I call 'select' event for any node I get an error:

Uncaught TypeError: Cannot call method 'dataItem' of undefined"

on the line

var data = $("#treeview").data("kendoTreeView").dataItem(e.node);

Any ideas how to solve that? How can I access data("kendoTreeView") of my tree? I've tried to get it on endRequest event of datasource but it doesn't work.

var jsonUrl = "/admin/adminmenu/adminmenujson";
    adminMenu = new kendo.data.HierarchicalDataSource({
        transport: {
            read: {
                url: jsonUrl,
                dataType: "json"
            },
        schema: {
            model: {
                id: "id",
                children: "items"
            }
        }
    });

    var tree = $("#treeview").kendoTreeView({
        name: "Admin Menu",
        expanded: true,
        loadOnDemand: false,
        dragAndDrop: true,
        dataSource: kendo.observableHierarchy(adminMenu),
        template: "#= item.name #  <input type='hidden' class='data_id' value='#=item.id#'>",
        select: function(e) {
            var data = $("#treeview").data("kendoTreeView").dataItem(e.node);
            console.log(data.id);
        }
    }).data("kendoTreeView");

1条回答
爷、活的狠高调
2楼-- · 2019-08-03 02:42

Define select handler as:

select      : function (e) {
    var data = this.dataItem(e.node);
    console.log(data.id);
}

Since this in the context of the select handler is the tree.

Example here http://jsfiddle.net/OnaBai/MLdeH/

NOTE: Try just removing name: "Admin Menu", it will also work!!!

查看更多
登录 后发表回答