zoukankan      html  css  js  c++  java
  • 项目总结:复杂树状菜单结点增改删(ZTree)

    <script type="text/javascript">
    <!--
       var userGroup;
       var CanAddDeleteComponent;


       var setting = {
    //        async: {
    //            enable: true,
    //            url: '<%= Url.Action("GetTree") %>',
    //            autoParam: ["id", "pId", "name=n", "level=lv"],
    //            otherParam: { "productId": '1' }
    ////                otherParam: { "otherParam": "zTreeAsyncTest" },
    ////            dataFilter: filter
    //        },
           view: {
               addHoverDom: addHoverDom,
               removeHoverDom: removeHoverDom,
               selectedMulti: false
           },
    //        check: {
    //            enable: true
    //        },
           edit: {
               enable: true,
               editNameSelectAll: true,
               //showRenameBtn: setRenameBtn,
               showRenameBtn: false,
                    showRemoveBtn: setRemoveBtn                
           },
           data: {
               simpleData: {
                   enable: true
               }
           },
           callback: {
               beforeDrag: beforeDrag,
               beforeEditName: beforeEditName,
               beforeRemove: beforeRemove,
               beforeRename: beforeRename,
               onRemove: onRemove,
               onRename: onRename
           }
       };


    //    var zNodes = [
    // { id: 1, pId: 0, name: "Parent Node 1", open: true },
    // { id: 11, pId: 1, name: "2nd Level 1-1", open: true },
    //            { id: 111, pId: 11, name: "3nd Level 1-1-1" },
    //            { id: 112, pId: 11, name: "3nd Level 1-1-2" },
    // { id: 12, pId: 1, name: "2nd Level 1-2" },
    //            { id: 121, pId: 12, name: "3nd Level 1-1-1" },
    //            { id: 122, pId: 12, name: "3nd Level 1-1-2" },
    // { id: 13, pId: 1, name: "2nd Level 1-3" }
    // ];


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


       var log, className = "dark";
       function beforeDrag(treeId, treeNodes) {
           return false;
       }
       function beforeEditName(treeId, treeNode) {
           className = (className === "dark" ? "":"dark");
           showLog("[ "+getTime()+" beforeEditName ]&nbsp;&nbsp;&nbsp;&nbsp; " + treeNode.name);
           var zTree = $.fn.zTree.getZTreeObj("treeDemo");
           zTree.selectNode(treeNode);
           return confirm("Edit Node -- " + treeNode.name + "?");
       }


       function beforeRemove(treeId, treeNode) {
           className = (className === "dark" ? "" : "dark");
           showLog("[ " + getTime() + " beforeRemove ]&nbsp;&nbsp;&nbsp;&nbsp; " + treeNode.name);
           var zTree = $.fn.zTree.getZTreeObj("treeDemo");
           zTree.selectNode(treeNode);
           //confirm("Are you sure to DELETE node -- " + treeNode.name + " ?")


           var canDelete;
           $.ajax({
               url: '<%=Url.Action("CanDeleteTreeNode")%>',
               type: 'POST',
               async: false,
               data: { productId: $('#ProductsDropDownList').val(), treenodeId: treeNode.id },
               success: function (data) {
                   if (data == "0") {
                       alert("Node is NOT allowed to delete since there is product definition for the node.");
                       canDelete=false;
                   } else {
                       canDelete = true;
                   }
               }
           });


           return canDelete; 
        }


            function onRemove(e, treeId, treeNode) {
           showLog("[ " + getTime() + " onRemove ]&nbsp;&nbsp;&nbsp;&nbsp; " + treeNode.name);
       }
       function beforeRename(treeId, treeNode, newName) {
           className = (className === "dark" ? "" : "dark");
           showLog("[ " + getTime() + " beforeRename ]&nbsp;&nbsp;&nbsp;&nbsp; " + treeNode.name);
           if (newName.length == 0) {
               alert("Name cannot be blank.");
               var zTree = $.fn.zTree.getZTreeObj("treeDemo");
               setTimeout(function () { zTree.editName(treeNode) }, 10);
               return false;
           }
           return true;
       }
       function onRename(e, treeId, treeNode) {
           showLog("[ " + getTime() + " onRename ]&nbsp;&nbsp;&nbsp;&nbsp; " + treeNode.name);
       }
       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.level == 1) {
               if (CanAddDeleteComponent == "True") {
                   var sObj = $("#" + treeNode.tId + "_span");
                   if (treeNode.editNameFlag || $("#addBtn_" + treeNode.id).length > 0) return;
                   var addStr = "<span class='button add' id='addBtn_" + treeNode.id
       + "' title='add node' onfocus='this.blur();'></span>";
                   sObj.after(addStr);
                   var btn = $("#addBtn_" + treeNode.id);
                   if (btn) btn.bind("click", function () {
                       //$("#lbl_ParentName").innerText = treeNode.name;
                       $("#MarketsDropDownListNew").attr("value", $("#MarketsDropDownList").val());


                       $("#NewDialog").dialog({
                           resizable: false,
                            500,
                           modal: true,
                           buttons: {
                               "Confirm": function () {


                                   if ($("#txt_NewNodeName").val() == "") {
                                       alert("Please input the New Node Name.");
                                   } else {
                                       var adddedname = $("#txt_NewNodeName").val();
                                       var newTree = $.fn.zTree.getZTreeObj("treeDemo");


                                       var Nodes = newTree.getNodes();
                                       var act = newTree.transformToArray(Nodes);


                                       for (var i = 0; i < act.length; i++) {


                                           if (act[i].name == adddedname)
                                           { alert('duplicate node name!'); return false; }
                                       }




                                       if ($("#MarketsDropDownListNew").val() != $("#MarketsDropDownList").val() && $("#MarketsDropDownListNew").val() != "General") {


                                           $.ajax({
                                               url: '<%=Url.Action("AddNewComponent")%>',
                                               type: 'POST',
                                               async: false,
                                               data: 'productId=' + $('#ProductsDropDownList').val() + '&marketName=' + $("#MarketsDropDownListNew").val() + '&id=' + RndNum(8) + '&pId=' + treeNode.id + '&name=' + $("#txt_NewNodeName").val() + '&brandname=' + $("#txt_brand").val() + '&productname=' + $("#HiddenTXTProduct").val(),
                                               success: function (data) {
                                                   if (data == "fail") {
                                                       alert("Adding component failed!");
                                                   }
                                                   else if (data == "isnew") {
                                                       alert("Please save first for this is a new brand or product!");
                                                   }
                                                   else if (data == "exist") {
                                                       alert("The component has already exsited!");
                                                   }
                                               }
                                           });


                                       } else {
                                           newCount++;
                                           var zTree = $.fn.zTree.getZTreeObj("treeDemo");
                                           if ($("#chk_OwnProduct").is(':checked')) {
                                               //zTree.addNodes(treeNode, { id: (100 + newCount), pId: treeNode.id, name: $("#txt_NewNodeName").val(), marketName: $("#MarketsDropDownListNew").val() });
                                               zTree.addNodes(treeNode, { id: RndNum(8), pId: treeNode.id, name: GetNodeName($("#txt_NewNodeName").val(), $("#MarketsDropDownListNew").val()), marketName: $("#MarketsDropDownListNew").val() });
                                               //                            zTree.addNodes(treeNode, { id: (100 + newCount), pId: treeNode.id, name: "new node" + (newCount++), marketName: $("#MarketsDropDownListNew").val() });
                                           } else {
                                               zTree.addNodes(treeNode, { id: RndNum(8), pId: treeNode.id, name: $("#txt_NewNodeName").val(), marketName: "General" });
                                           }


                                           $("#txt_NewNodeName").attr("value", '');
                                           //                                        $(this).dialog("close");
                                           //                                        return false;
                                       }
                                       $(this).dialog("close");
                                       return false;
                                   }
                               },
                               Cancel: function () {
                                   $(this).dialog("close");
                               }
                           }
                       });
                   });    
               }       
                }
       };
       function removeHoverDom(treeId, treeNode) {
           $("#addBtn_" + treeNode.id).unbind().remove();
       };
       function selectAll() {
           var zTree = $.fn.zTree.getZTreeObj("treeDemo");
           zTree.setting.edit.editNameSelectAll = $("#selectAll").attr("checked");
       }


       $(document).ready(function () {
           userGroup = $('#HIddenUsergroup').val();
           //$("#CanAddDeleteComponent").attr("value", '<%=ViewBag.AddDeleteLocalComponent %>');
           CanAddDeleteComponent = '<%=ViewBag.AddDeleteLocalComponent %>';
           //        $.fn.zTree.init($("#treeDemo"), setting, zNodes);
           //        $.fn.zTree.init($("#treeDemo"), setting);
           //        $("#selectAll").bind("click", selectAll);
       });


            function setRemoveBtn(treeId, treeNode) {
                //        return !treeNode.isParent;
                var showButton = false;
                if (treeNode.level == 2) {
                    showButton = true;
                }else{
                    showButton = false;
                }
                //show button for admin
                if (treeNode.level == 2) {
                    if (userGroup != "SuperUser" && treeNode.marketName == "General") {
                        showButton = false;
                    }


                    if (CanAddDeleteComponent != "True") {
                        showButton = false;
                    }
                }


                return showButton; 
            }


            function setRenameBtn(treeId, treeNode) {
           //return !treeNode.isParent;
                var showButton = false;
                if (treeNode.level == 2) {
                    showButton = true;
                }else{
                    showButton = false;
                }
                //show button for admin
                if (treeNode.level == 2) {
                    if (userGroup != "SuperUser" && treeNode.marketName == "General") {
                        return false;
                    }
                }


                return showButton; 
            }




            function GetNodeRandomId() {
                var date = new Date();
                var times1970 = date.getTime();
                var NodeRandomId = parseInt(date.getDate() + date.getHours() + date.getMinutes() + date.getSeconds());
                return RndNum(4);
            }


            function RndNum(n) {
                var rnd = "";
                for (var i = 0; i < n; i++)
                    rnd += Math.floor(Math.random() * 10);
                return rnd;
            }


            function GetNodeName(name, marketname) {
                if (marketname == "General") {
                    return name
                }
                return name + '(' + marketname + ')'
            }
    //-->

    </script>

    <script type="text/javascript">

            $("#SaveTree").click(function () {


                //var IsNewProduct = false;
                if ($('#txt_brand').val() == "") {
                    alert("Please enter brand for the product.");
                    return false;
                }


                if ($("#txt_product").val() == "") {
                    alert("Please enter product for the brand.");
                    return false;
                }


                var newTree = $.fn.zTree.getZTreeObj("treeDemo");
                if (newTree==null) {
                    alert("Please click New first.");
                    return false;
                }
                var Nodes = newTree.getNodes();
                var act = newTree.transformToArray(Nodes);


                var postdata = new Array();


                for (var i = 0; i < act.length; i++) {
                    if (!act[i].pId && typeof (act[i].pId) != "undefined") {
                        act[i].pId = 0;
                    }


                    postdata[i] = { id: act[i].id, pId: act[i].pId, name: act[i].name, level: act[i].level, marketName: act[i].marketName };
                }


                var postData = $.toJSON(postdata);
                $("#HiddenTreeInfo_Json").attr("value", postData);


                //            $.ajax({
                //                url: '<%= Url.Action("SaveTree") %>',
                //                type: 'POST',
                //                //                dataType: 'json',
                //                data: 'TreeNodes=' + postData,
                //                success: function (data) {
                //                    alert(data.Msg);
                //                }
                //            });


                $(document.forms[0]).ajaxSubmit({
                    url: '<%= Url.Action("SaveTree")%>',
                    success: function (data) {
                        alert(data.Msg);
                        if (data.Result == "1") {
                            $(document.forms[0]).submit();
                        }
                    }
                });
            });

    </script>



            [HttpPost]
            public JsonResult SaveTree(ComponentIndexModel model, string TreeNodes)
            {


                try
                {
                    string brandname = model.TXTbrand;
                    int productId;


                    ComponentManageProxy component = new ComponentManageProxy();
                    IBrandRepository<BrandRow> _BrandRepository = new BrandRepository<BrandRow>();
                    BrandRow row = _BrandRepository.GetBrandByName(brandname);


                    if (row == null)
                    {


                        row = new BrandRow();


                        row.BrandName = brandname;


                        row.UniqueID = Guid.NewGuid();
                        row.BrandType = model.ProductType ? 1 : 0;


                        _BrandRepository.AddBrand(row);


                    }




                    ProductRepository<ProductRow> _ProductRepository = new ProductRepository<ProductRow>();


                    if (model.hidden_product != null)
                    {
                        ProductRow _row = _ProductRepository.GetProductByName(model.hidden_product);
                        if (_row == null)
                        {
                            _row = new ProductRow();
                            _row.UniqueID = Guid.NewGuid();
                            _row.ProductName = model.hidden_product;
                            _row.ComponentTreeID = Guid.NewGuid();
                            _row.BrandName = brandname;
                            _ProductRepository.AddProduct(_row);
                            _row = _ProductRepository.GetProductByUniqueID(_row.UniqueID);


                            productId = _row.ID;
                        }
                        else
                        {
                            //productId = int.Parse(model.Product);
                            productId = _row.ID;
                            if (productId.ToString() != model.Product)
                            {
                                return Json(new
                                {
                                    Msg = "The product is already exsit.",
                                    Result = "2",
                                });
                            }
                        }
                    }
                    else
                    {
                        productId = int.Parse(model.Product);
                    }


                    //component.DeleteTree(productId);


                    ProductManage Producttarget = new ProductManage(_ProductRepository);
                    ProductRow _Product = _ProductRepository.GetProductByID(productId);
                    //component.GetAllComponentNodes(_Product.ComponentTreeID);


                    IComponentRepository<ComponentRowwithMultipleLCA> _ComponentBackupRepo = new ComponentRepository<ComponentRowwithMultipleLCA>();
                    IComponentTreeNodeRepository<ComponentTree> _NodeBackupRepo = new ComponentTreeNodeRepository<ComponentTree>();
                    IComponentTreeNodeCompoundRepository<ComponentTreeCompound> _TreeBackupRepo = new ComponentTreeCompoundRepository<ComponentTreeCompound>();




                    IList<ComponentTreeCompound> _TreeBackupList = _TreeBackupRepo.GetAllComponentNodes(_Product.ComponentTreeID);
                    JavaScriptSerializer jss = new JavaScriptSerializer();
                    List<array> nodelist = new List<array>();
                    IList<ComponentTreeCompound> _MarketSpecificNodeList;
                    if (model.Market == "General") _MarketSpecificNodeList = _TreeBackupList.Where(x => (x.Level == 3 && x.MarketName != "General" && (x.Name != null && x.Name != String.Empty))).ToList();
                    else _MarketSpecificNodeList = _TreeBackupList.Where(x => (x.Level == 3 && (x.MarketName != "General" && x.MarketName != model.Market && (x.Name != null && x.Name != String.Empty)))).ToList();


                    //nodelist = jss.Deserialize(TreeNodes, typeof(List<array>)) as List<array>;
                    nodelist = jss.Deserialize(model.TreeInfo_Json, typeof(List<array>)) as List<array>;


                    foreach (var node in nodelist)
                    {


                        if (_TreeBackupList.Count == 0)
                        {
                            //if (node.level == 2)
                            //{
                            //inserttodb()
                            ComponentRowwithMultipleLCA componentRow = new ComponentRowwithMultipleLCA();


                            componentRow.UniqueID = Guid.NewGuid();
                            componentRow.AssignedID = node.id;
                            componentRow.ComponentName = GetNameWithoutMarket(node.name);
                            componentRow.MarketName = (node.marketName == null || node.marketName == "") ? "General" : node.marketName;
                            if (node.level == 0) { componentRow.Description = "root"; }


                            //component.AddComponentTreeNode(componentRow, _ParentUniqueID, _RootID, level);
                            component.AddCompoment(componentRow, productId, node.pId, node.level + 1);
                        }
                        else
                        {
                            if (node.level != 2)
                            {
                                if (node.level == 1)
                                {


                                    IList<ComponentTreeCompound> _nodeEnum = _MarketSpecificNodeList.Where(i => (i.PId == node.id && i.RootID == _Product.ComponentTreeID)).ToList();
                                    foreach (ComponentTreeCompound o in _nodeEnum)
                                    {
                                        ComponentTreeCompound obj1 = o;
                                        //UpdateModel;
                                        ComponentRowwithMultipleLCA __row = _ComponentBackupRepo.FindComponentByUniqueID(obj1.UniqueID);
                                        __row.ComponentName = node.name;
                                        //_ComponentBackupRepo.UpdateComponent(__row);
                                        _MarketSpecificNodeList.Remove(obj1);
                                        ComponentTreeCompound _MarketSpecificnode = _TreeBackupList.First(i => (i.Sid == obj1.Sid && i.RootID == _Product.ComponentTreeID));
                                        _TreeBackupList.Remove(_MarketSpecificnode);


                                    }
                                }
                                ComponentTreeCompound _node = _TreeBackupList.First(i => (i.Sid == node.id && i.RootID == _Product.ComponentTreeID));
                                _TreeBackupList.Remove(_node);
                            }
                            if (node.level == 2)
                            {
                                IList<ComponentTreeCompound> _nodeEnum = _TreeBackupList.Where(i => (i.Sid == node.id && i.RootID == _Product.ComponentTreeID)).ToList();
                                if (_nodeEnum.Count >= 1)
                                {
                                    ComponentTreeCompound obj1 = _nodeEnum.First();
                                    //UpdateModel;
                                    ComponentRowwithMultipleLCA __row = _ComponentBackupRepo.FindComponentByUniqueID(obj1.UniqueID);
                                    __row.ComponentName = node.name;
                                    //_ComponentBackupRepo.UpdateComponent(__row);
                                    _TreeBackupList.Remove(obj1);
                                }


                                else
                                {
                                    ComponentRowwithMultipleLCA componentRow = new ComponentRowwithMultipleLCA();


                                    componentRow.UniqueID = Guid.NewGuid();
                                    componentRow.AssignedID = node.id;
                                    componentRow.ComponentName = GetNameWithoutMarket(node.name);
                                    componentRow.MarketName = (node.marketName == null || node.marketName == "") ? "General" : node.marketName;
                                    if (node.level == 0) { componentRow.Description = "root"; }


                                    component.AddCompoment(componentRow, productId, node.pId, node.level + 1);
                                }
                            }
                        }




                    }








                    foreach (ComponentTreeCompound ob in _TreeBackupList)
                    {
                        //delete
                        _NodeBackupRepo.DeleteComponentTreeNodeByComponentUniqueID(ob.TreeNodeUniqueID);
                        _ComponentBackupRepo.DeleteComponent(ob.UniqueID);


                    }


                    return Json(new
                    {
                        Msg = "The hierachy definition was saved.",
                        Result = "1",
                    });
                }
                catch (Exception e)
                {
                    return Json(new
                    {
                        Msg = "The hierachy definition was saved unsucessful. " + e.Message,
                        Result = "0",
                    });
                }


            }

  • 相关阅读:
    css position 和 块级/行内元素解释
    jquery.cookie.js $.cookie()是怎么使用
    css transition transform animation例子讲解
    HttpUrlConnection使用详解--转
    HttpURLConnection与HttpClient浅析---转
    java对含有中文的字符串进行Unicode编码
    VMWARE里安装时出现'SMBus Host Controller not enabled'
    消息队列 Kafka 的基本知识及 .NET Core 客户端
    安装和测试Kafka
    mongo 聚合函数
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/2988771.html
Copyright © 2011-2022 走看看