1、新增和修改的時候先將parentNode獲取到,定義全局變量
var parentNode = null;
//加入添加資源按鈕 function addHoverDom(treeId, treeNode) { var obj = $('#' + treeNode.tId + '_span'); if ($('#add_' + treeNode.tId).length > 0) { return; } var menu = '<span id="add_'+treeNode.tId+'" class="button add" title="添加子資源"></span>'; obj.after(menu); var btn = $('#add_' + treeNode.tId); if (btn) btn.bind('click', function() { parentNode = treeNode; var tId = treeNode.tId; var parentcode = treeNode.codee; var code = getLastCode(treeNode); //alert(treeNode.id); $('#iframe').attr( 'src', '${_baseUrl}/add.do?nodeId=' + tId + '&parentcode=' + parentcode + '&code=' + code); return false; }); };
//點擊編輯按鈕進入編輯 function beforeEditName(treeId, treeNode) { status = 'edit'; parentNode = treeNode.getParentNode(); $('#iframe') .attr('src', '${_baseUrl}/edit.do?resId=' + treeNode.id); return false; }
當新增或者修改結束的時候,將當前節點的順序返回:
$("#addForm")
.ajaxSubmit(
{
type: "post", url: '${_baseUrl}/save.do', dataType: 'json', success: function (res) { window.parent.addChildNode(res,$("#order").val());//在父窗口中添加節點到指定順序處 window.location.href = '${_baseUrl}/detail.do?resId=' + res.id; }, error: function (res) { } }); $("#editForm") .ajaxSubmit( { type: "post", url: '${_baseUrl}/update.do', dataType: 'json', success: function (res) { window.parent.updateNode(res,$("#order").val());//在父窗口中更新順序 window.location.href = '${_baseUrl}/detail.do?resId=' + res.id; }, error: function (res) { } });
在ztree新增和修改節點之前先獲取當前順序在父節點的所有子節點中占的順序:
//獲取子節點的最大code function getIndexOfChildNode(order) { var childNodes = parentNode.children; var index = 0; if (childNodes) { var lastCode = 0;//childNodes[childNodes.length - 1].codee; childNodes.forEach(function(n) { n = parseInt(n.order); index = n < order ? ++index : index; }); } return index; }
調用ztree自身的添加節點的方法 zTree.addNodes(parentNode, index, node);將節點添加到指定順序下
//在資源樹中添加資源 function addChildNode(node,order) { var zTree = $.fn.zTree.getZTreeObj('zTree'); var index = getIndexOfChildNode(order); zTree.addNodes(parentNode, index, node); }
對於修改的節點信息,可以先刪除后添加:
//更新資源樹中的資源 function updateNode(res,order) { var zTree = $.fn.zTree.getZTreeObj('zTree'); var node = zTree.getNodeByParam("id", res.id, null); zTree.removeNode(node); var index = getIndexOfChildNode(order); zTree.addNodes(parentNode, index, res); }