在bootstrap中使用ztree插件做树形架构,由于觉得原始的树形不够美观,所以改了其中的css插件

demo演示,以及各种属性的用法网站:  http://www.treejs.cn/v3/demo.php#_107

修改页面风格网站:  http://www.lai18.com/content/2450914.html?from=cancel

增删改查以及拖拽功能网站:   http://www.cnblogs.com/lori/archive/2013/07/04/3171655.html

参考以上网站,可根据的自己的需要进行修改

下面贴出我在做项目时的代码(前端用的是bootstrap框架,对默认的css进行了修改)

1)先引入文件(一个css,一个js文件)

<link rel="stylesheet" href="${contextPath}/static/assets/css/zTreeStyle/metro.css"/>
"${contextPath}/static/assets/js/ztree-3.5/jquery.ztree.all-3.5.js"2)页面
   //注意这个地方的引入,否则页面不会显示任何东西
<div id="organizationTree" class="ztree" style="width:560px; overflow:auto;"></div>  3) js代码
    var zTree;    var setting = {        check: {            enable: true        },        async: {            enable: true,  //开启异步加载处理            contentType: "application/json;charset=utf-8",            // dataFilter: filter,//用于对 Ajax 返回数据进行预处理的函数            dataType: "json",            url: "${contextPath}/organization/getOrganizations/list",    //加载后台数据            //autoParam: ["id", "name"],            type: "post",            //autoParam:[]            otherParam: []            // dataFilter: filter     //用于对 Ajax 返回数据进行预处理的函数        },        view: {            expandSpeed: "",//zTree 节点展开、折叠时的动画速度,设置方法同 JQuery 动画效果中 speed 参数。

            addHoverDom: addHoverDom,  //用于当鼠标移动到节点上时,显示用户自定义控件,显示隐藏状态同 zTree 内部的编辑、删除按钮

            removeHoverDom: removeHoverDom,   //设置鼠标移到节点上,在后面显示一个按钮            selectedMulti: false,   // 禁止多点同时选中的功能            fontCss: setFontCss_ztree      //样式设置        },        edit: {            enable: true,   //设置 zTree 进入编辑状态            editNameSelectAll: true,            removeTitle: '删除',            renameTitle: '编辑',            showRemoveBtn: true,

            showRenameBtn: true,

        },        data: {            keep: {                parent: true,                leaf: false            },            simpleData: {                enable: true            }        },        callback: {            beforeRemove: beforeRemove,   //点击删除时触发,用来提示用户是否确定删除            beforeEditName: beforeEditName,   //点击编辑时触发,用来判断该节点是否能编辑            // beforeRename:beforeRename,//编辑结束时触发,用来验证输入的数据是否符合要求            // onRemove:onRemove,//删除节点后触发,用户后台操作            // onRename:onRename,//编辑后触发,用于操作后台            // beforeDrag:beforeDrag,//用户禁止拖动节点            // onClick:clickNode//点击节点触发的事件            // onNodeCreated: zTreeOnNodeCreated            onAsyncSuccess: zTreeOnAsyncSuccess,   //默认展开所有节点            /*拖动回调*/            beforeDrag: beforeDrag,//          beforeDrop: beforeDrop,//          beforeDragOpen: beforeDragOpen,//          onDrag: onDrag,            onDrop: onDrop        }    };
//设置鼠标移到节点上,在后面显示一个按钮function removeHoverDom(treeId, treeNode) {    $("#addBtn_" + treeNode.tId).unbind().remove();}

//加载树结构function loadTreeData() {    zTree = $.fn.zTree.init($("#organizationTree"), setting);}

function reloadTree() {    loadTreeData();}

function zTreeOnAsyncSuccess(event, treeId, treeNode, msg) {    zTree.expandAll(true);}
//实现拖拽var log, className = "dark";var treeID = "treeDemo";var curDragNodes, autoExpandNode;var newCount = 1;

function beforeDrag(treeId, treeNodes) {    className = (className === "dark" ? "" : "dark");    for (var i = 0, l = treeNodes.length; i < l; i++) {        if (treeNodes[i].drag === false) {            curDragNodes = null;            return false;        } else if (treeNodes[i].parentTId && treeNodes[i].getParentNode().childDrag === false) {            curDragNodes = null;            return false;        }    }    curDragNodes = treeNodes;    return true;}
function onDrop(event, treeId, treeNodes, targetNode, moveType, isCopy) {

    if (moveType == "inner") {        $.ajax({            contentType: "application/json",            url: "${contextPath}/organization/operateOrg",            //传送请求数据            data: JSON.stringify({                oper: "changeParent",                primaryKey: targetNode.id,                primaryKeys: [treeNodes[0].id]            }),            // data: { id: treeNodes[0].id, pid: targetNode.id, name: treeNodes[0].name, moveType: moveType, isCopy: isCopy },            dataType: "json",            method: 'post',            success: function (data) {

                alert('拖拽成功!');            }        });    } else {        $.ajax({            contentType: "application/json",            url: "${contextPath}/organization/operateOrg",            //传送请求数据            data: JSON.stringify({                oper: "setSameParent",                primaryKey: targetNode.id,                primaryKeys: [treeNodes[0].id]            }),            // data: { id: treeNodes[0].id, pid: targetNode.id, name: treeNodes[0].name, moveType: moveType, isCopy: isCopy },            dataType: "json",            method: 'post',            success: function (data) {

                alert('拖拽成功!');            }        });    }}
function keydownInput() {    var event = event || window.event;    if (event.keyCode == 13) {        searchOrg();    }}function searchOrg() {    //searchByFlag_ztree(treeId, search_orgainzation, "");    searchByFlag_ztree('organizationTree', 'search_orgainzation', "");    /*var searchName = $("#search_orgainzation").val();     $.ajax({     url: "    ${contextPath}/organization/getOrganizations/list?keyword="+searchName,     type : 'POST',     dataType : 'json',     success : function(data) {

     }     });*/

}

/** * 收起树:只展开根节点下的一级节点 * @param treeId */function close_ztree(treeId) {    var treeObj = $.fn.zTree.getZTreeObj(treeId);    var nodes = treeObj.transformToArray(treeObj.getNodes());    var nodeLength = nodes.length;    for (var i = 0; i < nodeLength; i++) {        if (nodes[i].id == '0') {            //根节点:展开            treeObj.expandNode(nodes[i], true, true, false);        } else {            //非根节点:收起            treeObj.expandNode(nodes[i], false, true, false);        }    }}

/** * 搜索树,高亮显示并展示【模糊匹配搜索条件的节点s】 * @param treeId * @param search_orgainzation 文本框的id */function searchOrganization(treeId, search_orgainzation) {    searchByFlag_ztree(treeId, search_orgainzation, "");}

/** * 搜索树,高亮显示并展示【模糊匹配搜索条件的节点s】 * @param treeId * @param searchConditionId     搜索条件Id * @param flag                  需要高亮显示的节点标识 */function searchByFlag_ztree(treeId, search_orgainzation, flag) {    //<1>.搜索条件    var searchCondition = $("#search_orgainzation").val();    //<2>.得到模糊匹配搜索条件的节点数组集合    var highlightNodes = new Array();    if (searchCondition && searchCondition != "") {

        // var treeObj = $.fn.zTree.init($("#organizationTree"), setting,treeId);        //  var treeObj=reloadTree(treeId);

        var treeObj = $.fn.zTree.getZTreeObj(treeId);        highlightNodes = treeObj.getNodesByParamFuzzy("name", searchCondition, null);        //<3>.高亮显示并展示【指定节点s】        highlightAndExpand_ztree(treeId, highlightNodes, flag);    }

}

/** * 高亮显示并展示【指定节点s】 * @param treeId * @param highlightNodes 需要高亮显示的节点数组 * @param flag           需要高亮显示的节点标识 */function highlightAndExpand_ztree(treeId, highlightNodes, flag) {    var treeObj = $.fn.zTree.getZTreeObj(treeId);    //<1>. 先把全部节点更新为普通样式    var treeNodes = treeObj.transformToArray(treeObj.getNodes());    for (var i = 0; i < treeNodes.length; i++) {        treeNodes[i].highlight = false;        treeObj.updateNode(treeNodes[i]);    }    //<2>.收起树, 只展开根节点下的一级节点    close_ztree(treeId);    //<3>.把指定节点的样式更新为高亮显示,并展开    if (highlightNodes != null) {        for (var i = 0; i < highlightNodes.length; i++) {            if (flag != null && flag != "") {                if (highlightNodes[i].flag == flag) {                    //高亮显示节点,并展开                    highlightNodes[i].highlight = true;                    treeObj.updateNode(highlightNodes[i]);                    //高亮显示节点的父节点的父节点....直到根节点,并展示                    var parentNode = highlightNodes[i].getParentNode();                    var parentNodes = getParentNodes_ztree(treeId, parentNode);                    treeObj.expandNode(parentNodes, true, false, true);                    treeObj.expandNode(parentNode, true, false, true);                }            } else {                //高亮显示节点,并展开                highlightNodes[i].highlight = true;                treeObj.updateNode(highlightNodes[i]);                //高亮显示节点的父节点的父节点....直到根节点,并展示                var parentNode = highlightNodes[i].getParentNode();                var parentNodes = getParentNodes_ztree(treeId, parentNode);                treeObj.expandNode(parentNodes, true, false, true);                treeObj.expandNode(parentNode, true, false, true);            }        }    }}

/** * 递归得到指定节点的父节点的父节点....直到根节点 */function getParentNodes_ztree(treeId, node) {    if (node != null) {        var treeObj = $.fn.zTree.getZTreeObj(treeId);        var parentNode = node.getParentNode();        return getParentNodes_ztree(treeId, parentNode);    } else {        return node;    }}

/** * 设置树节点字体样式 */function setFontCss_ztree(treeId, treeNode) {    if (treeNode.id == 0) {        //根节点        return {color: "#333", "font-weight": "bold"};    } else if (treeNode.isParent == false) {        //叶子节点        return (!!treeNode.highlight) ? {color: "#ff0000", "font-weight": "bold"} : {            color: "#660099",            "font-weight": "normal"        };    } else {        //父节点        return (!!treeNode.highlight) ? {color: "#ff0000", "font-weight": "bold"} : {            color: "#333",            "font-weight": "normal"        };    }}
//添加新的节点function addHoverDom(treeId, treeNode) {    $("#priorityTip").hide();    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 btn = $("#addBtn_" + treeNode.tId);    if (btn) btn.bind("click", function () {        var zTree = $.fn.zTree.getZTreeObj("organizationTree");        // if (confirm("确认为 " + treeNode.name + " 添加子节点吗?")) {

        $("#modal-table").modal("show");        //设置新增窗口的一些属性,重置表单中的值        document.getElementById("title1").innerHTML = "新增组织架构";        $("#editOrganization").addClass("hidden");        $("#addOrganization").removeClass("hidden");        $("#form_organizationform")[0].reset();

        $("#form_organizationParent").val(treeNode.id);        $("#form_organizationParentName").val(treeNode.name);    });}
//编辑前的验证function beforeEditName(treeId, treeNode) {    $("#priorityTip").hide();    document.getElementById("title1").innerHTML = "编辑组织架构";    $("#addOrganization").addClass("hidden");    $("#editOrganization").removeClass("hidden");

    var parentId = treeNode.pId;    $.ajax({        url: "${contextPath}/organization/getOrganizations/query?id=" + parentId,        type: 'POST',        dataType: 'json',        success: function (data) {            $("#form_organizationParentName").val(data.orgname);        }    });    $("#form_organizationORG_ID").val(treeNode.id);    $("#form_organizationName").val(treeNode.name);    $("#form_organizationParent").val(treeNode.pId);    $("#form_organizationORG_BRIEF").val(treeNode.orgbrief);    $("#form_organizationORG_CODE").val(treeNode.orgcode);    if (treeNode.isactive) {        $("#form_organizationIsactive").val("true");    } else {        $("#form_organizationIsactive").val("false");    }

    $("#form_organizationPRIORITY").val(treeNode.priority);    $("#form_organizationADDWAY").val(treeNode.addway);    $("#form_organizationDesc").val(treeNode.description);

    $("#modal-table").modal("show");}
//删除节点信息function beforeRemove(treeId, treeNode) {    var zTree = $.fn.zTree.getZTreeObj("organizationTree");    zTree.selectNode(treeNode);    var selectNodeId = treeNode.id;    var selectNodeParentId = treeNode.pId;

    bootbox.confirm({        title: "提示",        message: "删除组织架构[<font class='red'>" + treeNode.name + "</font>]" +        "<br/><input type='radio' id='delOneorg' name='delOrg' checked/>如有下级架构,将会自动并入本级架构中" +        "<br/><input type='radio' id='delPartOrg' name='delOrg'/>如有下级架构,将会一起被删除",        buttons: {            confirm: {                label: "确认",                //className: "btn-success",            },            cancel: {                label: "取消",                //className: "btn-success",            }        },        callback: function (result) {            if (result) {//OK                if ($('#delOneorg').is(':checked')) {                    //开始发送数据                    $.ajax({                        contentType: "application/json",                        url: "${contextPath}/organization/operateOrg",                        dataType: "json",                        method: 'post',                        //传送请求数据                        data: JSON.stringify({                            oper: "delMerge",                            entry: {                                id: selectNodeId,                                parentid: selectNodeParentId                            }                        }),                        success: function (data_) {                            alert('删除成功!');                            //重载tree数据                            reloadTree();                        },                        error: function (XMLHttpRequest, textStatus, errorThrown) {                            alert('删除失败!');                        }                    });                } else {                    $.ajax({                        contentType: "application/json",                        url: "${contextPath}/organization/operateOrg",                        dataType: "json",                        method: 'post',                        //传送请求数据                        data: JSON.stringify({                            oper: "del",                            primaryKey: selectNodeId                        }),                        success: function (data_) {                            alert('删除成功!');                            //重载tree数据                            reloadTree();                        },                        error: function (XMLHttpRequest, textStatus, errorThrown) {                            alert('删除失败!');                        }                    });                }

            }        }    });

    return false;

}
function addOrganization() {    if ($("#form_organizationName").val().length == 0) {        $("#form_organizationName").focus();        return false;    }    if ($("#form_organizationIsactive").val().length == 0) {        $("#form_organizationIsactive").focus();        return false;    }    if ($("#form_organizationPRIORITY").val().length == 0||!isNumber($("#form_organizationPRIORITY").val())) {        if(!isNumber($("#form_organizationPRIORITY").val()))        $("#form_organizationPRIORITY").focus();        $("#priorityTip").show();        return false;    }

    //开始发送数据    $.ajax    ({        contentType: "application/json",        url: "${contextPath}/organization/operateOrg",        dataType: "json",        method: 'post',        //传送请求数据        data: JSON.stringify({            oper: "update",            entry: {                id: -1,                parentid: $("#form_organizationParent").val(),                orgname: $("#form_organizationName").val(),                orgbrief: $("#form_organizationORG_BRIEF").val(),                orgcode: $("#form_organizationORG_CODE").val(),                isactive: $("#form_organizationIsactive").val(),                priority: $("#form_organizationPRIORITY").val(),                addway: $("#form_organizationADDWAY").val(),                description: $("#form_organizationDesc").val()            }        }),        success: function (data_) {            //alert(data_);            alert(data_.message);            //重载grid数据            reloadTree();        },        error: function (XMLHttpRequest, textStatus, errorThrown) {            alert("error:" + textStatus);        }    });    //$("#add_proj").modal("show");    $("#modal-table").modal("hide");}

function editOrganization() {    if ($("#form_organizationName").val().length == 0) {        $("#form_organizationName").focus();        return false;    }    if ($("#form_organizationIsactive").val().length == 0) {        $("#form_organizationIsactive").focus();        return false;    }    if ($("#form_organizationPRIORITY").val().length == 0||!isNumber($("#form_organizationPRIORITY").val())) {        if(!isNumber($("#form_organizationPRIORITY").val()))            $("#form_organizationPRIORITY").focus();        $("#priorityTip").show();        return false;    }    //开始发送数据    $.ajax    ({        contentType: "application/json",        url: "${contextPath}/organization/operateOrg",        dataType: "json",        method: 'post',        //传送请求数据        data: JSON.stringify({            oper: "update",            entry: {                id: $("#form_organizationORG_ID").val(),                parentid: $("#form_organizationParent").val(),                orgname: $("#form_organizationName").val(),                orgbrief: $("#form_organizationORG_BRIEF").val(),                orgcode: $("#form_organizationORG_CODE").val(),                isactive: $("#form_organizationIsactive").val(),                priority: $("#form_organizationPRIORITY").val(),                description: $("#form_organizationDesc").val()            }        }),        success: function (data_) {            //alert(data_);            alert(data_.message);            //重载grid数据            reloadTree();        },        error: function (XMLHttpRequest, textStatus, errorThrown) {            alert("error:" + textStatus);        }    });    //$("#add_proj").modal("show");    $("#modal-table").modal("hide");}
 
 
 
 

 

转载于:https://www.cnblogs.com/chen-yun/p/6208214.html

ztree插件的使用相关推荐

  1. oracle 生成目录树,jQuery zTree插件快速实现目录树

    ztree是JQuery的一个开源树形目录的插件,用来快速构建网站的树形目录结构,并且提供了功能丰富,利于扩展的API. JQuery ztree官网 只要引入jquery和ztree的库js,然后给 ...

  2. j2ee 简单网站搭建:(十)jquery ztree 插件使用入门

    为什么80%的码农都做不了架构师?>>>    <j2ee 简单网站搭建:(一) windows 操作系统下使用 eclipse 建立 maven web 项目> < ...

  3. vue ztree插件的使用

    ztree官網:官網下載ztree插件並放到項目内配置Home [zTree -- jQuery tree plug-ins.]zTree 是一个依靠 jQuery 实现的多功能 "树插件& ...

  4. jquery niceScroll(插件)滚动条错位问题和ztree插件的使用

    1.在做项目时,由于页面风格不能使用默认的滚动条,所以找到了niceScroll这个滚动条插件 2.要使用滚动条和ztree插件,我们必须先引入插件的js文件,这里要注意的是niceScroll插件是 ...

  5. 树状图JQuery.ztree插件的使用

    一. 树状图,顾名思义就是树形状的图,想必大家对它也不陌生,而且天天都在用的.就比如文件资源管理器里面左侧功能,它就是一个树状图,使用树状图可以很方便快捷地找到所需要的文件,而且对于文件的管理也是非常 ...

  6. ztree插件树状图

    开发工具与关键技术:MVC 作者:Mr_恺 撰写时间:2019年6月27日 树状图不知道大家有没有做过,要不是做项目,项目中有这个需求,我也没有那么快能接触到这过功能,刚开始的时候对这个功能真的一脸懵 ...

  7. jquery ztree插件使用

    官网:ztree.me,下载插件 在页面中引入ztree相关的文件: <link rel="stylesheet" href="../../../css/zTree ...

  8. jQuery EasyUI ztree插件使用

    1.下载easyUI的开发包 该包的结构是 2.将easyUI的资源文件引入的页面中: <link rel="stylesheet" type="text/css& ...

  9. vue3+ts 引入ztree插件

    vue3+ts+ztree 新公司 要用新技术 vue3+ts 一切从头学 最近要引一个树的插件 ztree 所以把遇到的问题 都记下来 一.ztree 找了无数个tree的插件,最后被ztree征服 ...

最新文章

  1. 伦敦大学学院、UC伯克利联手,撰文综述深度强化学习泛化研究
  2. [Servlet]深入掌握Servlet
  3. 前台获取json未定义问题之两种常用解决办法
  4. 蓝桥杯第六届国赛JAVA真题----奇怪的数列
  5. byte与或运算 java_java中byte转换int时为何与0xff进行与运算
  6. mysql升序nuul在最后,javaweb连接数据库并完成增删改查
  7. linux服务器MySQL数据从磁盘拷贝以及恢复
  8. 极速PDF编辑器提示缺少字体如何解决
  9. 关于成型滤波器实现方式的简单比较
  10. Rplidar A1/A2使用及Hector_SLAM建图
  11. ​Copyright到底是什么意思?
  12. 阿尔伯塔计算机硕士录取,阿尔伯塔大学计算机工程专业硕士.pdf
  13. Linux shell爬虫实现树洞网鼓励师(自动回复Robot)
  14. matlab锂电池充电电路,锂离子电池充放电电路模型及其仿真.doc
  15. 微信小程序拼团功能页面展示
  16. 某公司要开发新游戏,请用面向对象的思想,设计游戏中的蛇怪和蜈蚣精
  17. 南方雨季来袭,物联网助力水位监测防止洪涝灾害
  18. 新生宝宝办证-STEP1-出生证明办理
  19. python复利代码_使用Python进行复利
  20. 《关于组织申报2017年度高新技术企业的通知》

热门文章

  1. Nodejs 路由封装 封装一个类似 express 的路由
  2. Chapter1-6_Speech_Recognition(RNN-T Training)
  3. python 动态属性和特性
  4. 天池 在线编程 最小的行程(动态规划)
  5. LeetCode 1685. 有序数组中差绝对值之和(前缀和)
  6. LeetCode 303. 区域和检索 - 数组不可变(前缀和)
  7. 程序员面试金典 - 面试题 17.04. 消失的数字(数学/位运算)
  8. LeetCode 553. 最优除法(数学)
  9. LeetCode 415. 字符串相加(大数加法)
  10. python调用metasploit自动攻击_Python实现远程调用MetaSploit的方法