Kendo UI:TreeView - 如何判断给定节点是否有父节点

时间:2012-12-24 15:18:38

标签: kendo-ui kendo-treeview

我正在尝试在TreeView上使用dragend事件,以便向服务器发送命令以进行适当的更改,但是,为此,我需要目标节点和目标节点上的父信息。目前我有以下内容:

function dragEndEvent(e) {

    var treeViewData = $(".hierarchy-tree").data('kendoTreeView');

    var quotaSetID = $("#quotaset-id").val();
    var columnID = $("#treeViewColumnID").val();
    var targetNode = treeViewData.dataItem(e.sourceNode);
    var targetParentNode = targetNode.parent();
    var destinationNode = treeViewData.dataItem(e.destinationNode);
    var destinationParentNode = null;
    if(destinationNode!=null )
        destinationParentNode = destinationNode.parent();

    var targetName = targetNode.text;
    var targetID = targetNode.id;
    var targetsParentID = null;
    if (targetParentNode != null && targetParentNode.length == 1)
        targetsParentID = targetParentNode[0].id;

    var destinationName = null;
    var destinationID = null;
    var destinationsParentID = null;
    if (destinationNode != null) {
        destinationName = destinationNode.text;
        destinationID = destinationNode.id;
        if (destinationParentNode != null && destinationParentNode.length == 1)
            destinationsParentID = destinationParentNode[0].id;
    }
    // Followed by ajax query
}

我注意到的是parent()调用返回一个列表,而且我似乎没有任何实际父级的指示。也许我正在捕获错误的事件,但在这里,parent()函数似乎返回目标节点的兄弟节点。我还希望能够判断节点是否没有父节点(即它在根级别)

2 个答案:

答案 0 :(得分:3)

使用parentNode(),因为parent()会返回包含此dataItem的数组。

答案 1 :(得分:0)

我也没有看到parentNode()方法。要判断节点是否是dragend事件中的顶级节点,您只需使用jquery即可。您也可以使用jquery来获取UID,然后您可以使用它来获取数据节点。

var targetNode = e.destinationNode;
if ($(targetNode).parent("ul").parent(".k-treeview").length === 1) {
    //top level node
} else {
    //not top level node
    var htmlNode = $(targetNode).parent("ul").parent(".k-item");  
    //if you need the telerik version of the node
    var treeViewData = $(".hierarchy-tree").data('kendoTreeView');
    var parentUid = $(htmlNode).data("uid");
    var parentNode = treeViewData.findByUid(parentUid);
    var parentDataNode = treeViewData.dataItem(parentNode);
    var parentid = parentDataNode.id;
}