zTree组件的使用总结

xchrist 2016-03-03

             第一次接触zTree,不得不说是一个好东西啊。说它是好东西是因为它为我们苦逼的程序员们节省了不少的时间。废话不多说上干货,希望能帮到你,如果需要更多的功能需要自己去看官方文档。

             zTree加载树的数据来源有两种方式

            1.页面加载时一次性加载完毕

             <!DOCTYPE html>
<HTML>
<HEAD>
    <TITLE> ZTREE DEMO - radio</TITLE>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">
    <script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script>
    <script type="text/javascript" src="../../../js/jquery.ztree.core.js"></script>
    <script type="text/javascript" src="../../../js/jquery.ztree.excheck.js"></script>
    <!--
    <script type="text/javascript" src="../../../js/jquery.ztree.exedit.js"></script>
    -->
    <SCRIPT type="text/javascript">
        <!--
        var setting = {
            check: {
                enable: true,
                chkStyle: "radio",
                radioType: "level"
            },
            data: {
                simpleData: {
                    enable: true
                }
            }
        };

        var zNodes =[
            { id:1, pId:0, name:"随意勾选 1", open:true},
            { id:11, pId:1, name:"随意勾选 1-1", open:true},
            { id:111, pId:11, name:"随意勾选 1-1-1"},
            { id:112, pId:11, name:"随意勾选 1-1-2"},
            { id:12, pId:1, name:"随意勾选 1-2", open:true},
            { id:121, pId:12, name:"随意勾选 1-2-1"},
            { id:122, pId:12, name:"随意勾选 1-2-2"},
            { id:2, pId:0, name:"随意勾选 2", open:true},
            { id:21, pId:2, name:"随意勾选 2-1"},
            { id:22, pId:2, name:"随意勾选 2-2", open:true},
            { id:221, pId:22, name:"随意勾选 2-2-1", checked:true},
            { id:222, pId:22, name:"随意勾选 2-2-2"},
            { id:23, pId:2, name:"随意勾选 2-3"}
        ];
       
        var code;       
        function setCheck() {
            var type = $("#level").attr("checked")? "level":"all";
            setting.check.radioType = type;
            showCode('setting.check.radioType = "' + type + '";');
            $.fn.zTree.init($("#treeDemo"), setting, zNodes);
        }
        function showCode(str) {
            if (!code) code = $("#code");
            code.empty();
            code.append("<li>"+str+"</li>");
        }
       
        $(document).ready(function(){
            setCheck();           
            $("#level").bind("change", setCheck);
            $("#all").bind("change", setCheck);
        });
        //-->
    </SCRIPT>
</HEAD>

<BODY>
<h1>Radio 勾选操作</h1>
<h6>[ 文件路径: excheck/radio.html ]</h6>
<div class="content_wrap">
    <div class="zTreeDemoBackground left">
        <ul id="treeDemo" class="ztree"></ul>
    </div>
    <div class="right">
        <ul class="info">
            <li class="title"><h2>1、setting 配置信息说明</h2>
                <ul class="list">
                <li class="highlight_red">使用 radio,必须设置 setting.check 中的各个属性,详细请参见 API 文档中的相关内容</li>
                <li><p>radio 分组范围:<input type="radio" id="level" class="radio first" name="radioGroup" checked /><span>同一级内</span>
                        <input type="radio" id="all" class="radio" name="radioGroup"/><span>整棵树内</span><br/>
                        <ul id="code" class="log" style="height:20px;"></ul></p>
                </li>
                </ul>
            </li>
            <li class="title"><h2>2、treeNode 节点数据说明</h2>
                <ul class="list">
                <li class="highlight_red">1)、如果需要初始化默认节点被勾选,请设置 treeNode.checked 属性,详细请参见 API 文档中的相关内容</li>
                <li class="highlight_red">2)、如果某节点不显示 radio,请设置 treeNode.nocheck 属性,详细请参见 API 文档中的相关内容</li>
                <li class="highlight_red">3)、如果更换 checked 属性,请参考 API 文档中 setting.data.key.checked 的详细说明</li>
                <li>4)、其他请参考 API 文档中 treeNode.checkedOld / getCheckStatus / check_Child_State / check_Focus 的详细说明</li>
                </ul>
            </li>
        </ul>
    </div>
</div>
</BODY>
</HTML>

            2.页面加载时先加载根节点,然后通过它本身支持的异步来加载数据(当节点数据有上万条时采用异步加载效率会很高)。

           注意:json数据中一定要包含isParent字段(布尔类型)。

                     由于是异步所以我们在判断isParent的时候只需要向下一级就ok了。返回的list>0则设为True

否则设为false;具体情况具体对待

            例如

           <SCRIPT type="text/javascript">
        var setting = {
            check: {
                radioType:"all",
                enable: true,
                chkStyle: "radio",
            },
               async:{
                   autoParam:["id"],
                   enable:true,
                   url:common.getWholeURL("/system/division/getDivisionByParentId"),
                   type:'post'
                  } ,

        data: {
                simpleData: {
                    idKey: "id",
                    pIdKey: "parentId",
                    enable: true
                },
                key: {
                    name: "divisionName",
                }
            }
        };   
        var nodes;
        var code;       
        function setCheck() {
            getRootNodeData()
        }
        $(document).ready(function(){
            setCheck();           

        });
        function getRootNodeData(){
            $.ajax({
                url: common.getWholeURL("/system/division/getDivisionByParentId"),
                data:{"id":"你的实际根节点的id"},
                type:"post",
                async:false,
                success: function(data){
                    $.fn.zTree.init($("#treeDemo"), setting,data);

                },
               error:function(){
                   alert("数据加载异常");
                   return;
               }
            });
        }
    </SCRIPT>
</head>
<body>
    <div class="zTreeDemoBackground left">
        <ul id="treeDemo" class="ztree"></ul>
    </div>
</body>

相关推荐