Ztree使用方法

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>test</title>
<%@ include file="/pages/common/common.jsp"%>


<link rel="stylesheet" type="text/css" href="<%=path%>/res/ztree/css/zTreeStyle/zTreeStyle.css" >
<script type="text/javascript" src="<%=path%>/res/jquery-easyui/jquery.min.js"></script>
<script type="text/javascript" src="res/ztree/js/jquery.ztree.all-3.5.js"></script>

<SCRIPT LANGUAGE="JavaScript">
var setting = {
        view: {
            addHoverDom:addHoverDom,
            removeHoverDom:removeHoverDom,
            showLine: true,   //父子之间连线
            showIcon: false,
            selectedMulti: false,
            dblClickExpand: false
            
        },
        edit: {
            enable: true,
            editNameSelectAll:true,
            removeTitle:'删除',
            renameTitle:'重命名'
        },
        check:{
            chkboxType: { "Y": "ps", "N": "ps" },
            chkStyle: "checkbox",  //复选框类型
            enable: true //每个节点上是否显示 CheckBox
        },
        expandSpeed : "fast",
        data: {
            simpleData: {
                enable: true,
                idKey : "id",
                pIdKey : "pId",
                rootPId : null
            }
        },
        callback: {
            onCheck:onCheck,
            beforeRemove:beforeRemove,//点击删除时触发,用来提示用户是否确定删除(可以根据返回值 true|false 确定是否可以删除)
            beforeEditName: beforeEditName,//点击编辑时触发,用来判断该节点是否能编辑
            beforeRename:beforeRename,//编辑结束时触发,用来验证输入的数据是否符合要求(也是根据返回值 true|false 确定是否可以编辑完成)
            onRemove:onRemove,//(beforeRemove返回true之后可以进行onRemove)删除节点后触发,用户后台操作
            onRename:onRename,//编辑后触发,用于操作后台
            beforeDrag:beforeDrag,//用户禁止拖动节点
            onClick:clickNode//点击节点触发的事件

        }
    };
    
var zNodes =[
{ id:0, pId:null, name:"根节点1 - 展开"}, 
             { id:1, pId:0, name:"父节点1 - 展开"},                 //src自定义属性
             { id:11, pId:1, name:"父节点11 - 折叠"},
             { id:111, pId:11, name:"叶子节点111"},
             { id:112, pId:11, name:"叶子节点112"},
             { id:113, pId:11, name:"叶子节点113"},
             { id:114, pId:11, name:"叶子节点114"},
             { id:12, pId:11, name:"父节点12 - 折叠"},
             { id:121, pId:12, name:"叶子节点121"},
             { id:122, pId:12, name:"叶子节点122"},
             { id:123, pId:12, name:"叶子节点123"},
             { id:124, pId:12, name:"叶子节点124"},
             { id:13, pId:11, name:"父节点13 - 没有子节点", isParent:true},
             { id:10, pId:0, name:"父节点10 - 折叠"},
             { id:101, pId:10, name:"父节点21 - 展开"},
             { id:2, pId:0, name:"父节点2 - 折叠"},
             { id:21, pId:2, name:"父节点21 - 展开"},
             { id:211, pId:21, name:"叶子节点211"},
             { id:212, pId:21, name:"叶子节点212"},
             { id:213, pId:21, name:"叶子节点213"},
             { id:214, pId:21, name:"叶子节点214"},
             { id:22, pId:2, name:"父节点22 - 折叠"},
             { id:221, pId:22, name:"叶子节点221"},
             { id:222, pId:22, name:"叶子节点222"},
             { id:223, pId:22, name:"叶子节点223"},
             { id:224, pId:22, name:"叶子节点224"},
             { id:23, pId:2, name:"父节点23 - 折叠"},
             { id:231, pId:23, name:"叶子节点231"},
             { id:232, pId:23, name:"叶子节点232"},
             { id:233, pId:23, name:"叶子节点233"},
             { id:234, pId:23, name:"叶子节点234"},
             { id:3, pId:0, name:"父节点3 - 没有子节点"}
         ];

     

    
    //展开树
    function expandTree() {
        var dt = Format(new Date(), "yyyy-MM-dd HH:mm");
        alert(dt);
        var tree = $.fn.zTree.getZTreeObj('treeDemo');
        tree.expandAll(tree);
    }
//收起树:只展开根节点下的一级节点
    function closeTree() {
        var tree = $.fn.zTree.getZTreeObj('treeDemo');
        //获取 zTree 的全部节点数据将节点数据转换为简单 Array 格式
        var nodes = tree.transformToArray(tree.getNodes());
        for(var i=0;i<nodes.length;i++){
            if(nodes[i].level == 1){
                console.log(nodes[i].name);
                //根节点展开
                tree.expandNode(nodes[i],true,true,false);
            }else{
                tree.expandNode(nodes[i],false,true,false);
            }
        }
    }

//展开3级节点
    function expand3level(treeObj) {
        //获得树形图对象
        var nodeList = treeObj.getNodes();       //展开第一个节点
        for(var i = 0; i < nodeList.length; i++) { //设置节点展开第二级节点
            treeObj.expandNode(nodeList[i], true, false, true);
            
            var nodespan = nodeList[i].children;
            for(var j = 0; j < nodespan.length; j++) { //设置节点展开第三级节点
                treeObj.expandNode(nodespan[j], true, false, true);
            } 
        }
        
        alert(nodespan.length+"|"+nodespan[0].id);
        
    }


    /*选中事件*/
    function onCheck() {
        var result='';
        var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
        var nodes = treeObj.getCheckedNodes(true);
       /* for (var i = 0; i < nodes.length; i++) {
            var halfCheck = nodes[i].getCheckStatus();
            if (!halfCheck.half){
                result += nodes[i].id +"|"+nodes[i].name + ',';  //返回一串数字
            }
        }
       alert(result);
        return result;
        */
        var name = "", id = "";
        for (var i = 0, l = nodes.length; i < l; i++) {
            name = nodes[i].name;
            id = nodes[i].id;
            //只处理叶子节点
            if(!nodes[i].isParent){
                if(i == nodes.length - 1){
                    result+=nodes[i].id ;
                }else{
                    result+=nodes[i].id + ",";
                }
            }
                    
        }
       // alert( result);
        
        $("#treeName").val(name);
        $("#treeId").val(result); 
       
    }
    
    //显示菜单
    function showMenu() {
        var dropdownObj = $("#treeName");
        var dropdownOffset = $("#treeName").offset();
        $("#treeContainer").css({
            left: dropdownOffset.left + "px",
            top: dropdownOffset.top + dropdownObj.outerHeight() + "px"
        }).slideDown("fast");
        $("body").bind("mousedown", onBodyDown);
        var w = $("#treeName").width();
        var p = $("#treeName").css("padding-left");
        $("#treeConfig").css("width",parseInt(w)+parseInt(p)*2);
    }

    function hideMenu() {
        $("#treeContainer").fadeOut("fast");
        $("body").unbind("mousedown", onBodyDown);
    }
    function onBodyDown(event) {
        if (!(event.target.id == "chooseButton" || event.target.id == "treeName" 
                || event.target.id == "treeContainer" 
                || $(event.target).parents("#treeContainer").length > 0)) {
               hideMenu();
               //以下代码暂时没用到 start
               var height = top.$("#mainFrame").contents().find("body").height();
            if (height < 850) {
                height = 850;
            }
            top.$("#mainFrame").height(height);
               //以下代码暂时没用到 end
           }
       }
    
    function beforeRemove(e,treeId,treeNode){
        
        return confirm("你确定要删除吗?");
    }
    function onRemove(e,treeId,treeNode){
        if(treeNode.isParent){
            var childNodes = zTree.removeChildNodes(treeNode);
            return;
        }
        else{
            
        }
        
    }
    
    function beforeEditName(treeId,treeNode){
        /*  if(treeNode.isParent){
            alert("不准编辑非叶子节点!");
            return false;
        }  */
        return true;
    }
    function beforeRename(treeId,treeNode,newName,isCancel){ 
        if (newName.length == 0) {
            /* setTimeout(function () {
                var zTree = $.fn.zTree.getZTreeObj("treeDemo");
                zTree.cancelEditName();
                alert("节点名称不能为空.");
            }, 200); */
            
            alert("节点名称不能为空.");
            return false;
        }
        if(newName.length < 3){
            alert("节点名称不能小于3.");
        }
        return true;
    }
    function onRename(e,treeId,treeNode,isCancel){
        alert("修改节点的id为:"+treeNode.id+"\n修改后的名称为:"+treeNode.name);
    }
    
    //单击事件
    function clickNode(e,treeId,treeNode){
        if(treeNode.id == 1){
            //location.href=treeNode.url;
            ;
        }else{
            alert("节点名称:"+treeNode.name+"\n节点id:"+treeNode.id+"\n节点pId:"+treeNode.pId);
        }
    }
    function beforeDrag(treeId,treeNodes){
        return false;
    }
    
    //增加节点
    var newCount = 1;
    function addHoverDom(treeId, treeNode) {  
        var sObj = $("#" + treeNode.tId + "_span");  
        if (treeNode.editNameFlag || $("#addBtn_" + treeNode.tId).length > 0) return;  
        var addStr = "<span class='button add' id='addBtn_" + treeNode.tId  
            + "' title='add node' οnfοcus='this.blur();' ></span>";  
        sObj.after(addStr);  
        //获取子节点
        var childrenNodes = treeNode.children;
        var subNodeLen=childrenNodes.length;  //子节点数量
        
        var btn = $("#addBtn_" + treeNode.tId);  
        if (btn) btn.bind("click", function () { 
      
            var zTree = $.fn.zTree.getZTreeObj("treeDemo");  
            zTree.addNodes(treeNode, { id: (treeNode.id*10 +subNodeLen+ newCount), parentid: treeNode.id, name: "new node" + (newCount++) });  
            return false;  
        });  
    }; 
   
    function removeHoverDom(treeId, treeNode) {  
        $("#addBtn_" + treeNode.tId).unbind().remove();  
    }; 
    
    $(document).ready(function(){
        $.fn.zTree.init($("#treeDemo"), setting, zNodes);
        var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
    //    treeObj.expandAll(true); //展开所有节点
    
    //展开二级节点
    var nodes = treeObj.getNodes();
            for (var i = 0; i < nodes.length; i++) { //设置节点展开
              treeObj.expandNode(nodes[i], true, false, true);
               
            }
    }); 
</SCRIPT>
</HEAD>
<BODY>

    <input type="text" class="form-control input-sm" id="treeName"
        οnclick="showMenu()">
    <input type="hidden" name="newsTypeId" id="treeId" />

    <div id="treeContainer" class="treeContainer">
        <ul id="treeDemo" class="ztree"></ul>
    </div>
    <br />
    <button οnclick="expandTree()">展开</button>
    <button οnclick="closeTree()">折叠</button>
    <hr>

</BODY>

<script>
function Format(now,mask)
{
    var d = now;
    var zeroize = function (value, length)
    {
        if (!length) length = 2;
        value = String(value);
        for (var i = 0, zeros = ''; i < (length - value.length); i++)
        {
            zeros += '0';
        }
        return zeros + value;
    };
 
    return mask.replace(/"[^"]*"|'[^']*'|\b(?:d{1,4}|m{1,4}|yy(?:yy)?|([hHMstT])\1?|[lLZ])\b/g, function ($0)
    {
        switch ($0)
        {
            case 'd': return d.getDate();
            case 'dd': return zeroize(d.getDate());
            case 'ddd': return ['Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sat'][d.getDay()];
            case 'dddd': return ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][d.getDay()];
            case 'M': return d.getMonth() + 1;
            case 'MM': return zeroize(d.getMonth() + 1);
            case 'MMM': return ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][d.getMonth()];
            case 'MMMM': return ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'][d.getMonth()];
            case 'yy': return String(d.getFullYear()).substr(2);
            case 'yyyy': return d.getFullYear();
            case 'h': return d.getHours() % 12 || 12;
            case 'hh': return zeroize(d.getHours() % 12 || 12);
            case 'H': return d.getHours();
            case 'HH': return zeroize(d.getHours());
            case 'm': return d.getMinutes();
            case 'mm': return zeroize(d.getMinutes());
            case 's': return d.getSeconds();
            case 'ss': return zeroize(d.getSeconds());
            case 'l': return zeroize(d.getMilliseconds(), 3);
            case 'L': var m = d.getMilliseconds();
                if (m > 99) m = Math.round(m / 10);
                return zeroize(m);
            case 'tt': return d.getHours() < 12 ? 'am' : 'pm';
            case 'TT': return d.getHours() < 12 ? 'AM' : 'PM';
            case 'Z': return d.toUTCString().match(/[A-Z]+$/);
            // Return quoted strings with the surrounding quotes removed
            default: return $0.substr(1, $0.length - 2);
        }
    });
};
</script>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值