【簡】ZTree 【增、刪、改、查、】的前後端交互

本文講解 新手如何使用ZTree


1.首先引入ZTree相關文件   點我下載


 

   <link rel="stylesheet" href="../../vendor/ztree/css/zTreeStyle/zTreeStyle.css" type="text/css">

   <script type="text/javascript" src="../../vendor/ztree/js/jquery.ztree.core.js"></script>

   <script type="text/javascript" src="../../vendor/ztree/js/jquery.ztree.excheck.js"></script>

    <script type="text/javascript" src="../../vendor/ztree/js/jquery.ztree.exedit.js"></script>


2.創建一個ul 的標籤

     <ul id="treeDemo" class="ztree"></ul>


3.完整代碼如下,  

  // 樹 代碼

    var setting = {

        view: {

            addHoverDom: addHoverDom,

            removeHoverDom: removeHoverDom,

            selectedMulti: false,

            showIcon: true

        },

        edit: {

            removeTitle: "刪除",

            renameTitle: "編輯",

            enable: true,

            editNameSelectAll: true,

            showRemoveBtn: showRemoveBtn,

            showRenameBtn: showRenameBtn,

        },

        data: {

            simpleData: {

                enable: true,

                rootPId: "group_all_id"

            }

        },

        callback: {

            onClick: onClick,

            beforeDrag: beforeDrag,

            beforeEditName: beforeEditName,

            beforeRemove: beforeRemove,

            beforeRename: beforeRename,

            onRemove: onRemove,

            onRename: onRename

        }

    };



    var log, className = "dark";



    function beforeDrag(treeId, treeNodes) {

        return false;

    }



    var treeName;



    function beforeEditName(treeId, treeNode, newname) {

        treeName = treeNode.name;

    }



    function beforeRemove(treeId, treeNode) {

        var zTree = $.fn.zTree.getZTreeObj(treeId);

        layer.confirm("確認刪除 分組  " + treeNode.name + " 嗎?", {

            btn: ['是', '否']

        }, function(index) {

            var loading = layer.load(2, {

                shade: [0.2, '#000']

            });

            $.ajax({

                url: config.testConfig.APIURL

                type: 'get',

                data: {

                    id: treeNode.id,

                },

            success: function(r) {

                    if(JSON.parse(r).error == 0) {

                        layer.msg('刪除成功', {

                            icon: 6

                        });

                        zTree.removeNode(treeNode);

                        layer.close(index);



                    } else {

                        layer.msg('刪除失敗', {

                            icon: 5

                        });

                        error(r); //如果error!=0;

                    }

                    layer.close(loading);

                    loadTree()

                },

                error: function(s) {

                    layer.msg('刪除出錯了');

                }

            });

        }, function(index) {

            layer.close(index);

        });

        return false;

    }



    function onRemove(e, treeId, treeNode) {

        showLog("[ " + getTime() + " onRemove ]&nbsp;&nbsp;&nbsp;&nbsp; " + treeNode.name);

    }



    function beforeRename(treeId, treeNode, newName, isCancel) {

        className = (className === "dark" ? "" : "dark");

        showLog((isCancel ? "<span style='color:red'>" : "") + "[ " + getTime() + " beforeRename ]&nbsp;&nbsp;&nbsp;&nbsp; " + treeNode.name + (isCancel ? "</span>" : ""));

        if(newName.length == 0 || newName.trim().length == 0) {

            setTimeout(function() {

                var zTree = $.fn.zTree.getZTreeObj("treeDemo");

                zTree.cancelEditName();

                layer.msg('節點名不能爲空', {

                    icon: 2

                });

            }, 0);

            return false;

        }

        if(newName.length > 8) {

            setTimeout(function() {

                var zTree = $.fn.zTree.getZTreeObj("treeDemo");

                zTree.cancelEditName();

                layer.msg('節點名稱過長', {

                    icon: 2

                });

            }, 0);

            return false;

        }

        return true;

    }



    function onRename(e, treeId, treeNode, isCancel) {

        if(isCancel) {

            return;

        }



        var zTree = $.fn.zTree.getZTreeObj("treeDemo");

        var onodes = zTree.getNodes();

        if(treeName == treeNode.name) {



        } else {



            //發送請求修改節點信息

            var loading = layer.load(2, {

                shade: [0.2, '#000']

            });

            $.ajax({

                url: config.testConfig.APIURL ,
                type: 'get',

                data: {

                    Id: treeNode.id,

                    title: treeNode.name,

                 

                },

              

                success: function(r) {

                    if(JSON.parse(r).error == 0) {

                        layer.msg('修改成功', {

                            icon: 6

                        });

                    } else {

                        layer.msg('修改失敗', {

                            icon: 5

                        });

                        error(r); //如果error!=0;



                    }

                    layer.close(loading);

                    loadTree()

                },

                error: function(s) {

                    layer.msg('修改出錯了');

                }

            });



        }



    }



    function showRemoveBtn(treeId, treeNode) {

        if(treeNode.id == "group_all_id" || treeNode.id == "group_default_id") {

            return false;

        }

        return !treeNode.isParent;

    }



    function showRenameBtn(treeId, treeNode) {

        if(treeNode.id == "group_all_id" || treeNode.id == "group_default_id") {

            return false;

        }

        return true

    }



    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);

    }



    var newCount = 1;



    function addHoverDom(treeId, treeNode) {

        if(treeNode.id == "group_default_id") {

            return false;

        }



        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='添加節點' οnfοcus='this.blur();'></span>";

        sObj.after(addStr);

        var btn = $("#addBtn_" + treeNode.tId);



        //當點擊添加按鈕時:

        if(btn) btn.bind("click", function() {

            var zTree = $.fn.zTree.getZTreeObj("treeDemo");

            var name = "新節點" + (newCount++);

            var newNode;

            //發送請求保存一個新建的節點,後臺返回ID,用返回的ID新增節點

            var loading = layer.load(2, {

                shade: [0.2, '#000'],

                content: '<span style="margin-left: -25px;color: #000;">正在新增節點....</span>',

                success: function(layero) {

                    layero.find('.layui-layer-content').css({

                        'padding': '40px 0',

                        'width': '100px',



                    });

                }

            });

            var name = "新節點" + (newCount++);

            $.ajax({

                url: config.testConfig.APIURL 

                type: 'get',

                data: {

                    parentId: treeNode.id,

                    title: name,

                  
                },

           

                success: function(r) {

                    if(JSON.parse(r).error == 0) {

                        layer.msg('添加成功', {

                            icon: 6

                        });

                        newNode = zTree.addNodes(treeNode, {

                            id: (100 + newCount),

                            pId: treeNode.id,

                            name: name

                        });

                        //  zTree.editName(newNode[0]) //新增的節點進入編輯狀態

                    } else {

                        layer.msg('添加失敗', {

                            icon: 5

                        });

                        error(r); //如果error!=0;



                    }

                    layer.close(loading);

                    loadTree()

                },

                error: function(s) {

                    layer.msg('添加失敗');

                    // window.location.reload();

                }

            });



            return false;

        });



    };



    function removeHoverDom(treeId, treeNode) {

        $("#addBtn_" + treeNode.tId).unbind().remove();

    };



    function selectAll() {

        var zTree = $.fn.zTree.getZTreeObj("treeDemo");

        zTree.setting.edit.editNameSelectAll = $("#selectAll").attr("checked");

    }



    $(document).ready(function() {

        loadTree();

        $("#selectAll").bind("click", selectAll);

    });

    //加載樹

    function loadTree() {

        var loading = layer.load(2, {

            shade: [0.4, '#000']

        });

        $.ajax({

            type: 'GET',

            url: config.testConfig.APIURL 

          


            success: function(data) {

                if(JSON.parse(data).error == 0) {

                    $.fn.zTree.init($("#treeDemo"), setting, JSON.parse(data).data);

                } else {

                    error(data); //如果error!=0;出錯執行此函數;

                }

                layer.close(loading);

            },

            error: function() {

                layer.close(loading);

            }

        })

    }



    //點擊樹加載表格數據

    function onClick(event, treeId, treeNode) {

        //點擊樹節點 去操作其他數據

    }

 

如有其他問題,請在下方留言評論噢

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章