2014-01-30 65 views
2

我有一棵樹,按節點數據中的訂單號排序。但是,我試圖在樹中拖放一個節點後排序節點。我可以更新訂單沒有成功,但節點沒有移動到樹上。它在我將節點再次拖動到位置後起作用。Jstree拖放訂購

$("#projectIssues").jstree({ 
     sort: treeSortFunction, 
     json_data: { data: nodes }, 
     ui: { "select_limit": 1 }, 
     themes: { url: themeUrl }, 
     core: { "check_callback": true }, 
     plugins: ["themes", "json_data", "ui", "sort", "dnd", "crrm"], 
     crrm: { 
      "move": { 
      "default_position": "inside", 
      "check_move": function(n) { 
        return Project.ViewModel.DragDropNode(n); 
       } 
      } 
     } 
    }).bind("move_node.jstree", function (e, d) { 
     console.log(d.rslt.cp); 
     var node = _tree._get_node(d.rslt.o); 
     node.data("OrderNo", d.rslt.cp); 
     console.log("Current Node Order:" + node.data("OrderNo")); 
     Project.ViewModel.UpdateNodeOrder(d.rslt.np, d.rslt.o); 

    }).bind("dblclick.jstree", doubleClickNode) 
    .bind("select_node.jstree", function (event, result) { 
     var node = result.rslt.obj; 
     Project.ViewModel.UpdateEditor(node); 
    }); 

,更新順序的方法沒有什麼

self.UpdateNodeOrder = function (parentNode, curNode) { 
    var childNodes = _tree._get_children(parentNode); 
    var node = _tree._get_node(curNode); 
    for (var i = node.data("OrderNo"); i <= childNodes.length-1; i++) { 
     var n = _tree._get_node(childNodes[i]); 
     if (n != undefined) { 
      if (node.data("Name") !== n.data("Name")) { 
       n.data("OrderNo", i + 1); 
      } 
      console.log(n.data("Name") + " " + n.data("OrderNo")); 
     } 
    } 
}; 

回答

0

新增_tree.sort(parentNode.children(其中的伎倆 「UL」)