1. 程式人生 > >zTree初體驗(五)——樹間資料交換

zTree初體驗(五)——樹間資料交換

        我發現,樹與樹之間的交換,在網站中的應用並不多,其實這是一個很好的功能。比如說,我們專案中用的的“自定義關注”功能。因為在我們的日常工作中,我們不會跟所有人都有工作交集,相反我們總是在頻繁的跟一部分人打交道,也就是我們關注的並不是所有人,而只是跟我們工作相關的。我們可以將使用者和部門加入到自定義關注中,並可以自定義修改使用者和組的備註名稱,而且可自己調整使用者和組的順序。是不是很方便?

        對於多棵樹之間拖拽的操作非常簡單,只需要建立兩棵可拖拽的樹即可,同時可根據 各種事件回撥函式 以及 zTree 的方法配合實現較複雜的操作規則,這裡只是簡單演示。根據自己的業務需要可再自行新增相應功能程式碼。

        首先,給兩棵樹“佔個地兒”:

	<div class="zTreeDemoBackground left">
		<ul id="treeDemo" class="ztree"></ul>
	</div>
	<div class="right">
		<ul id="treeDemo2" class="ztree"></ul>
	</div>

        其次,看一下實現簡單拖拽的js程式碼:
<SCRIPT type="text/javascript">
	var setting = {
		edit: {
			enable: true,
			showRemoveBtn: false,
			showRenameBtn: false
		},
		data: {
			simpleData: {
				enable: true
			}
		},
		callback: {
			beforeDrag: beforeDrag,
			beforeDrop: beforeDrop
		}
	};

	var zNodes =[
		{ id:1, pId:0, name:"父節點 1", open:true},
		{ id:11, pId:1, name:"葉子節點 1-1"},
		{ id:12, pId:1, name:"葉子節點 1-2"},
		{ id:13, pId:1, name:"葉子節點 1-3"},
		{ id:2, pId:0, name:"父節點 2", open:true},
		{ id:21, pId:2, name:"葉子節點 2-1"},
		{ id:22, pId:2, name:"葉子節點 2-2"},
		{ id:23, pId:2, name:"葉子節點 2-3"},
		{ id:3, pId:0, name:"父節點 3", open:true},
		{ id:31, pId:3, name:"葉子節點 3-1"},
		{ id:32, pId:3, name:"葉子節點 3-2"},
		{ id:33, pId:3, name:"葉子節點 3-3"}
	];

	function beforeDrag(treeId, treeNodes) {
		for (var i=0,l=treeNodes.length; i<l; i++) {
			if (treeNodes[i].drag === false) {
				return false;
			}
		}
		return true;
	}
	function beforeDrop(treeId, treeNodes, targetNode, moveType) {
		return targetNode ? targetNode.drop !== false : true;
	}
	
	$(document).ready(function(){
		$.fn.zTree.init($("#treeDemo"), setting, zNodes);
		$.fn.zTree.init($("#treeDemo2"), setting);
		
	});
</SCRIPT>

        最後,看一下效果:


        哈哈,是不是很簡單,這樣一來,拖拖拽拽就能得到自己想到的內容。這裡只是簡單實現,做為拋磚引玉,具體的肉的,還得自己去補,像與節點判斷,資料庫同步……