1

適切な変更を行うためにサーバーにコマンドを送信するために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()関数がターゲットノードの兄弟を返しているようです。また、ノードに親がないかどうか(つまり、ルートレベルにあるかどうか)を確認できるようにしたいと思います。

4

2 に答える 2

3

あなたが気づいたように、parent()はこのdataItemを保持する配列を返すので、parentNode()を使用してください。

于 2012-12-25T11:51:32.490 に答える
1

parentNode()メソッドも表示されません。ノードがドラッグエンドイベントの最上位ノードであるかどうかを確認するには、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;
}
于 2015-03-02T15:46:50.363 に答える