【问题标题】:Kendo Treeview with remote datasource issue具有远程数据源问题的 Kendo Treeview
【发布时间】:2013-06-28 21:26:26
【问题描述】:

我的树视图有以下代码。一切都好。我可以使用我的树:展开、折叠、拖动项目。但是当我为任何节点调用“选择”事件时,我得到一个错误:

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

上线

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

任何想法如何解决这个问题?如何访问我的树的data("kendoTreeView")?我尝试在数据源的endRequest 事件中获取它,但它不起作用。

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");

【问题讨论】:

  • 我不熟悉有问题的树控件,但 $("#treeview").data("kendoTreeView")null - 所以在你的 javascript 调试器(Firebug/Chrome 开发工具/等)中的该行上放置一个断点并检查$("#treeview").data 看看里面有什么?

标签: jquery kendo-ui


【解决方案1】:

select 处理程序定义为:

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

因为select 处理程序上下文中的thistree

这里的例子http://jsfiddle.net/OnaBai/MLdeH/

注意:尝试只删除name: "Admin Menu",,它也会起作用!!!

【讨论】:

  • 你能帮我创建一个节点按钮吗?
  • 创建按钮有什么问题?你想创造什么?这与原始问题有何关系?
  • 我有一个这样的代码,它什么都不做$("#append").click(function () { var treeView = $("#treeview").kendoTreeView().data("kendoTreeView"); console.log(treeView) var selectedNode = treeView.select(); console.log(selectedNode) if (selectedNode.length == 0) { selectedNode = null; } selectedNode.append({ text: "test_node" }, selectedNode); });
  • 对不起,我明白了。我必须像 treeView.append(... 而不是 selectedNode.append(.. 那样做感谢您的耐心并回答我的奇怪问题)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多