zTree异步加载备忘

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="AsyZTree.aspx.vb" Inherits="NhibernateWeb.AsyZTree" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link rel="stylesheet" href="../js/ztree/css/demo.css" type="text/css" />
    <link rel="stylesheet" href="../js/ztree/css/zTreeStyle/zTreeStyle.css" type="text/css" />
    <script type="text/javascript" src="../Js/jquery-1.7.2.min.js"></script>
    <script type="text/javascript" src="../Js/ztree/js/jquery.ztree.all-3.2.js"></script>
    <script type="text/javascript">

        var setting = {
            data: {
                key: {
                    name: "Names"
                },
                simpleData: {
                    idKey: "ID",
                    pIdKey: "PID",
                    enable: true
                }
            },
			view: {
				selectedMulti: false
			},
			async: {
				enable: true,
				url:"ztreedata.ashx?Time="+Math.random(),
				autoParam:["ID", "Names=n", "level=lv"],
				otherParam:{"otherParam":"zTreeAsyncTest"}
			},
			callback: {
				beforeClick: beforeClick,
				beforeAsync: beforeAsync,
				onAsyncError: onAsyncError,
				onAsyncSuccess: onAsyncSuccess
			}
		};

		function filter(treeId, parentNode, childNodes) {
			if (!childNodes) return null;
			for (var i=0, l=childNodes.length; i<l; i++) {
				childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.');
			}
			return childNodes;
		}
		function beforeClick(treeId, treeNode) {
			if (!treeNode.isParent) {
				alert("请选择父节点");
				return false;
			} else {
				return true;
		    }
		    
		}
		var log, className = "dark";
		function beforeAsync(treeId, treeNode) {
			className = (className === "dark" ? "":"dark");
			showLog("[ "+getTime()+" beforeAsync ]    " + ((!!treeNode && !!treeNode.name) ? treeNode.name : "root") );
			return true;
		}
		function onAsyncError(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown) {
			showLog("[ "+getTime()+" onAsyncError ]    " + ((!!treeNode && !!treeNode.name) ? treeNode.name : "root") );
		}
		function onAsyncSuccess(event, treeId, treeNode, msg) {
			showLog("[ "+getTime()+" onAsyncSuccess ]    " + ((!!treeNode && !!treeNode.name) ? treeNode.name : "root") );
		}
		
		function showLog(str) {
			if (!log) log = $("#log");
			log.append("<li class='"+className+"'>"+str+"</li>");
			if(log.children("li").length > 8) {
				log.get(0).removeChild(log.children("li")[0]);
			}
		}
		function getTime() {
			var now= new Date(),
			h=now.getHours(),
			m=now.getMinutes(),
			s=now.getSeconds(),
			ms=now.getMilliseconds();
			return (h+":"+m+":"+s+ " " +ms);
		}

		function refreshNode(e) {
			var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
			type = e.data.type,
			silent = e.data.silent,
			nodes = zTree.getSelectedNodes();
			if (nodes.length == 0) {
				alert("请先选择一个父节点");
			}
			for (var i=0, l=nodes.length; i<l; i++) {
				zTree.reAsyncChildNodes(nodes[i], type, silent);
				if (!silent) zTree.selectNode(nodes[i]);
			}
		}

		$(document).ready(function(){
			$.fn.zTree.init($("#treeDemo"), setting);
			$("#refreshNode").bind("click", {type:"refresh", silent:false}, refreshNode);
			$("#refreshNodeSilent").bind("click", {type:"refresh", silent:true}, refreshNode);
			$("#addNode").bind("click", {type:"add", silent:false}, refreshNode);
			$("#addNodeSilent").bind("click", {type:"add", silent:true}, refreshNode);

		    $("#refreshAll").click(function() {
		        var zTree = $.fn.zTree.getZTreeObj("treeDemo");
		        zTree.reAsyncChildNodes(null, "refresh");
		    });

		});

    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div class="zTreeDemoBackground left" style="height:1500px;float:left;">
		<ul id="treeDemo" class="ztree"></ul>
        <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
	</div>
    <div>
        <input id="refreshNode" type="button" value="重新加载" />
        <input id="addNode" type="button" value="追加" />
        <input id="refreshNodeSilent" type="button" value="悄悄地 重新加载" />
        <input id="addNodeSilent" type="button" value="悄悄地 追加" />
        <input id="refreshAll" type="button" value="全部重新加载" />
    </div>
    </form>
</body>
</html>

 

posted on 2012-11-28 11:11  vedusoft  阅读(1418)  评论(0编辑  收藏  举报