尝试将新节点附加到现有节点不适用于自定义架构

时间:2012-12-19 15:31:54

标签: javascript kendo-ui kendo-treeview

使用Kendo UI Web v2012.3.1114时,我遇到的问题是我正在尝试使用我通过AJAX调用服务器检索的节点对TreeView进行简单的附加操作失败,并显示以下错误。

节点与正常读取功能返回的数据格式完全相同。 我已成功将data("kendoTreeView").insertBefore(...)用于同一个树并调用,但当我尝试使用data("kendoTreeView").append(...)时,它失败了。

错误讯息:

  

未捕获的TypeError:对象#的属性“数据”不是a   功能kendo.web.min.js:25

由于我必须能够为以前是叶子的节点创建新的子节点,所以我不能使用任何其他API来执行此操作。

我已经制作了jsFiddle来显示树的定义以及我希望能够做什么。我尝试在Kendo网站上引用工作示例,但似乎只要我使用自定义架构,事情便会向南发展。

以下是我正在使用的jsFiddle的代码:

function populateHierarchyTree(quotaSetID, columnID, treeDiv) {

    var transport = {
        read: {
            url: '/Quota/QuotaHierarchy/GetQuotaHierarchyChildrenFromParent',
            dataType: 'json',
            data: { columnDefinitionID: columnID, quotaSetID: quotaSetID, batchSize:10 },
            type: 'POST'
        }
    };

    var schema = {
        model: {
            id: 'id',
            hasChildren: 'hasChildren'
        }
    };

    var dataSource = new kendo.data.HierarchicalDataSource({
        transport: transport,
        schema: schema
    });

    treeDiv.kendoTreeView({
        loadOnDemand: true,
        dataSource: dataSource,
        dataTextField: "text",
    });
}

// This function is called with a single node which contains the exact same structure returned from GetQuotaHierarchyChildrenFromParent used by the read. ParentElement could be anything.
function AddNode(node,parentElement,treeView){
    treeView.append(node,parentElement);
}

1 个答案:

答案 0 :(得分:2)

您如何选择parentElement?您确定它是kendoTreeView节点吗?

试试这个:

treeView.append(node, parentElement.closest(".k-item"));

添加.closest(".k-item");我尝试的是找到node的最近parentNode祖先。