分享

项目总结:复杂树状菜单

 ThinkTank_引擎 2014-07-07

[javascript] view plaincopy
  1. <script type="text/javascript">  
  2. <!--  
  3.    var userGroup;  
  4.    var CanAddDeleteComponent;  
  5.   
  6.   
  7.    var setting = {  
  8. //        async: {  
  9. //            enable: true,  
  10. //            url: '<%= Url.Action("GetTree") %>',  
  11. //            autoParam: ["id", "pId", "name=n", "level=lv"],  
  12. //            otherParam: { "productId": '1' }  
  13. ////                otherParam: { "otherParam": "zTreeAsyncTest" },  
  14. ////            dataFilter: filter  
  15. //        },  
  16.        view: {  
  17.            addHoverDom: addHoverDom,  
  18.            removeHoverDom: removeHoverDom,  
  19.            selectedMulti: false  
  20.        },  
  21. //        check: {  
  22. //            enable: true  
  23. //        },  
  24.        edit: {  
  25.            enable: true,  
  26.            editNameSelectAll: true,  
  27.            //showRenameBtn: setRenameBtn,  
  28.            showRenameBtn: false,  
  29.                 showRemoveBtn: setRemoveBtn                  
  30.        },  
  31.        data: {  
  32.            simpleData: {  
  33.                enable: true  
  34.            }  
  35.        },  
  36.        callback: {  
  37.            beforeDrag: beforeDrag,  
  38.            beforeEditName: beforeEditName,  
  39.            beforeRemove: beforeRemove,  
  40.            beforeRename: beforeRename,  
  41.            onRemove: onRemove,  
  42.            onRename: onRename  
  43.        }  
  44.    };  
  45.   
  46.   
  47. //    var zNodes = [  
  48. // { id: 1, pId: 0, name: "Parent Node 1", open: true },  
  49. // { id: 11, pId: 1, name: "2nd Level 1-1", open: true },  
  50. //            { id: 111, pId: 11, name: "3nd Level 1-1-1" },  
  51. //            { id: 112, pId: 11, name: "3nd Level 1-1-2" },  
  52. // { id: 12, pId: 1, name: "2nd Level 1-2" },  
  53. //            { id: 121, pId: 12, name: "3nd Level 1-1-1" },  
  54. //            { id: 122, pId: 12, name: "3nd Level 1-1-2" },  
  55. // { id: 13, pId: 1, name: "2nd Level 1-3" }  
  56. // ];  
  57.   
  58.   
  59.    function filter(treeId, parentNode, childNodes) {  
  60.        if (!childNodes) return null;  
  61.        for (var i = 0, l = childNodes.length; i < l; i++) {  
  62.            childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.');  
  63.        }  
  64.        return childNodes;  
  65.    }  
  66.   
  67.   
  68.    var log, className = "dark";  
  69.    function beforeDrag(treeId, treeNodes) {  
  70.        return false;  
  71.    }  
  72.    function beforeEditName(treeId, treeNode) {  
  73.        className = (className === "dark" ? "":"dark");  
  74.        showLog("[ "+getTime()+" beforeEditName ]     " + treeNode.name);  
  75.        var zTree = $.fn.zTree.getZTreeObj("treeDemo");  
  76.        zTree.selectNode(treeNode);  
  77.        return confirm("Edit Node -- " + treeNode.name + "?");  
  78.    }  
  79.   
  80.   
  81.    function beforeRemove(treeId, treeNode) {  
  82.        className = (className === "dark" ? "" : "dark");  
  83.        showLog("[ " + getTime() + " beforeRemove ]     " + treeNode.name);  
  84.        var zTree = $.fn.zTree.getZTreeObj("treeDemo");  
  85.        zTree.selectNode(treeNode);  
  86.        //confirm("Are you sure to DELETE node -- " + treeNode.name + " ?")  
  87.   
  88.   
  89.        var canDelete;  
  90.        $.ajax({  
  91.            url: '<%=Url.Action("CanDeleteTreeNode")%>',  
  92.            type: 'POST',  
  93.            async: false,  
  94.            data: { productId: $('#ProductsDropDownList').val(), treenodeId: treeNode.id },  
  95.            success: function (data) {  
  96.                if (data == "0") {  
  97.                    alert("Node is NOT allowed to delete since there is product definition for the node.");  
  98.                    canDelete=false;  
  99.                } else {  
  100.                    canDelete = true;  
  101.                }  
  102.            }  
  103.        });  
  104.   
  105.   
  106.        return canDelete;   
  107.     }  
  108.   
  109.   
  110.         function onRemove(e, treeId, treeNode) {  
  111.        showLog("[ " + getTime() + " onRemove ]     " + treeNode.name);  
  112.    }  
  113.    function beforeRename(treeId, treeNode, newName) {  
  114.        className = (className === "dark" ? "" : "dark");  
  115.        showLog("[ " + getTime() + " beforeRename ]     " + treeNode.name);  
  116.        if (newName.length == 0) {  
  117.            alert("Name cannot be blank.");  
  118.            var zTree = $.fn.zTree.getZTreeObj("treeDemo");  
  119.            setTimeout(function () { zTree.editName(treeNode) }, 10);  
  120.            return false;  
  121.        }  
  122.        return true;  
  123.    }  
  124.    function onRename(e, treeId, treeNode) {  
  125.        showLog("[ " + getTime() + " onRename ]     " + treeNode.name);  
  126.    }  
  127.    function showLog(str) {  
  128.        if (!log) log = $("#log");  
  129.        log.append("<li class='" + className + "'>" + str + "</li>");  
  130.        if (log.children("li").length > 8) {  
  131.            log.get(0).removeChild(log.children("li")[0]);  
  132.        }  
  133.    }  
  134.    function getTime() {  
  135.        var now = new Date(),  
  136. h = now.getHours(),  
  137. m = now.getMinutes(),  
  138. s = now.getSeconds(),  
  139. ms = now.getMilliseconds();  
  140.        return (h + ":" + m + ":" + s + " " + ms);  
  141.    }  
  142.   
  143.   
  144.    var newCount = 1;  
  145.    function addHoverDom(treeId, treeNode) {  
  146.        if (treeNode.level == 1) {  
  147.            if (CanAddDeleteComponent == "True") {  
  148.                var sObj = $("#" + treeNode.tId + "_span");  
  149.                if (treeNode.editNameFlag || $("#addBtn_" + treeNode.id).length > 0) return;  
  150.                var addStr = "<span class='button add' id='addBtn_" + treeNode.id  
  151.    + "' title='add node' onfocus='this.blur();'></span>";  
  152.                sObj.after(addStr);  
  153.                var btn = $("#addBtn_" + treeNode.id);  
  154.                if (btn) btn.bind("click", function () {  
  155.                    //$("#lbl_ParentName").innerText = treeNode.name;  
  156.                    $("#MarketsDropDownListNew").attr("value", $("#MarketsDropDownList").val());  
  157.   
  158.   
  159.                    $("#NewDialog").dialog({  
  160.                        resizable: false,  
  161.                        width: 500,  
  162.                        modal: true,  
  163.                        buttons: {  
  164.                            "Confirm": function () {  
  165.   
  166.   
  167.                                if ($("#txt_NewNodeName").val() == "") {  
  168.                                    alert("Please input the New Node Name.");  
  169.                                } else {  
  170.                                    var adddedname = $("#txt_NewNodeName").val();  
  171.                                    var newTree = $.fn.zTree.getZTreeObj("treeDemo");  
  172.   
  173.   
  174.                                    var Nodes = newTree.getNodes();  
  175.                                    var act = newTree.transformToArray(Nodes);  
  176.   
  177.   
  178.                                    for (var i = 0; i < act.length; i++) {  
  179.   
  180.   
  181.                                        if (act[i].name == adddedname)  
  182.                                        { alert('duplicate node name!'); return false; }  
  183.                                    }  
  184.   
  185.   
  186.   
  187.   
  188.                                    if ($("#MarketsDropDownListNew").val() != $("#MarketsDropDownList").val() && $("#MarketsDropDownListNew").val() != "General") {  
  189.   
  190.   
  191.                                        $.ajax({  
  192.                                            url: '<%=Url.Action("AddNewComponent")%>',  
  193.                                            type: 'POST',  
  194.                                            async: false,  
  195.                                            data: 'productId=' + $('#ProductsDropDownList').val() + '&marketName=' + $("#MarketsDropDownListNew").val() + '&id=' + RndNum(8) + '&pId=' + treeNode.id + '&name=' + $("#txt_NewNodeName").val() + '&brandname=' + $("#txt_brand").val() + '&productname=' + $("#HiddenTXTProduct").val(),  
  196.                                            success: function (data) {  
  197.                                                if (data == "fail") {  
  198.                                                    alert("Adding component failed!");  
  199.                                                }  
  200.                                                else if (data == "isnew") {  
  201.                                                    alert("Please save first for this is a new brand or product!");  
  202.                                                }  
  203.                                                else if (data == "exist") {  
  204.                                                    alert("The component has already exsited!");  
  205.                                                }  
  206.                                            }  
  207.                                        });  
  208.   
  209.   
  210.                                    } else {  
  211.                                        newCount++;  
  212.                                        var zTree = $.fn.zTree.getZTreeObj("treeDemo");  
  213.                                        if ($("#chk_OwnProduct").is(':checked')) {  
  214.                                            //zTree.addNodes(treeNode, { id: (100 + newCount), pId: treeNode.id, name: $("#txt_NewNodeName").val(), marketName: $("#MarketsDropDownListNew").val() });  
  215.                                            zTree.addNodes(treeNode, { id: RndNum(8), pId: treeNode.id, name: GetNodeName($("#txt_NewNodeName").val(), $("#MarketsDropDownListNew").val()), marketName: $("#MarketsDropDownListNew").val() });  
  216.                                            //                           zTree.addNodes(treeNode, { id: (100 + newCount), pId: treeNode.id, name: "new node" + (newCount++), marketName: $("#MarketsDropDownListNew").val() });  
  217.                                        } else {  
  218.                                            zTree.addNodes(treeNode, { id: RndNum(8), pId: treeNode.id, name: $("#txt_NewNodeName").val(), marketName: "General" });  
  219.                                        }  
  220.   
  221.   
  222.                                        $("#txt_NewNodeName").attr("value", '');  
  223.                                        //                                       $(this).dialog("close");  
  224.                                        //                                       return false;  
  225.                                    }  
  226.                                    $(this).dialog("close");  
  227.                                    return false;  
  228.                                }  
  229.                            },  
  230.                            Cancel: function () {  
  231.                                $(this).dialog("close");  
  232.                            }  
  233.                        }  
  234.                    });  
  235.                });      
  236.            }         
  237.             }  
  238.    };  
  239.    function removeHoverDom(treeId, treeNode) {  
  240.        $("#addBtn_" + treeNode.id).unbind().remove();  
  241.    };  
  242.    function selectAll() {  
  243.        var zTree = $.fn.zTree.getZTreeObj("treeDemo");  
  244.        zTree.setting.edit.editNameSelectAll = $("#selectAll").attr("checked");  
  245.    }  
  246.   
  247.   
  248.    $(document).ready(function () {  
  249.        userGroup = $('#HIddenUsergroup').val();  
  250.        //$("#CanAddDeleteComponent").attr("value", '<%=ViewBag.AddDeleteLocalComponent %>');  
  251.        CanAddDeleteComponent = '<%=ViewBag.AddDeleteLocalComponent %>';  
  252.        //        $.fn.zTree.init($("#treeDemo"), setting, zNodes);  
  253.        //        $.fn.zTree.init($("#treeDemo"), setting);  
  254.        //        $("#selectAll").bind("click", selectAll);  
  255.    });  
  256.   
  257.   
  258.         function setRemoveBtn(treeId, treeNode) {  
  259.             //        return !treeNode.isParent;  
  260.             var showButton = false;  
  261.             if (treeNode.level == 2) {  
  262.                 showButton = true;  
  263.             }else{  
  264.                 showButton = false;  
  265.             }  
  266.             //show button for admin  
  267.             if (treeNode.level == 2) {  
  268.                 if (userGroup != "SuperUser" && treeNode.marketName == "General") {  
  269.                     showButton = false;  
  270.                 }  
  271.   
  272.   
  273.                 if (CanAddDeleteComponent != "True") {  
  274.                     showButton = false;  
  275.                 }  
  276.             }  
  277.   
  278.   
  279.             return showButton;   
  280.         }  
  281.   
  282.   
  283.         function setRenameBtn(treeId, treeNode) {  
  284.        //return !treeNode.isParent;  
  285.             var showButton = false;  
  286.             if (treeNode.level == 2) {  
  287.                 showButton = true;  
  288.             }else{  
  289.                 showButton = false;  
  290.             }  
  291.             //show button for admin  
  292.             if (treeNode.level == 2) {  
  293.                 if (userGroup != "SuperUser" && treeNode.marketName == "General") {  
  294.                     return false;  
  295.                 }  
  296.             }  
  297.   
  298.   
  299.             return showButton;   
  300.         }  
  301.   
  302.   
  303.   
  304.   
  305.         function GetNodeRandomId() {  
  306.             var date = new Date();  
  307.             var times1970 = date.getTime();  
  308.             var NodeRandomId = parseInt(date.getDate() + date.getHours() + date.getMinutes() + date.getSeconds());  
  309.             return RndNum(4);  
  310.         }  
  311.   
  312.   
  313.         function RndNum(n) {  
  314.             var rnd = "";  
  315.             for (var i = 0; i < n; i++)  
  316.                 rnd += Math.floor(Math.random() * 10);  
  317.             return rnd;  
  318.         }  
  319.   
  320.   
  321.         function GetNodeName(name, marketname) {  
  322.             if (marketname == "General") {  
  323.                 return name  
  324.             }  
  325.             return name + '(' + marketname + ')'  
  326.         }  
  327. //-->  
  328. </script>  
  329. <script type="text/javascript">  
  330.         $("#SaveTree").click(function () {  
  331.   
  332.   
  333.             //var IsNewProduct = false;  
  334.             if ($('#txt_brand').val() == "") {  
  335.                 alert("Please enter brand for the product.");  
  336.                 return false;  
  337.             }  
  338.   
  339.   
  340.             if ($("#txt_product").val() == "") {  
  341.                 alert("Please enter product for the brand.");  
  342.                 return false;  
  343.             }  
  344.   
  345.   
  346.             var newTree = $.fn.zTree.getZTreeObj("treeDemo");  
  347.             if (newTree==null) {  
  348.                 alert("Please click New first.");  
  349.                 return false;  
  350.             }  
  351.             var Nodes = newTree.getNodes();  
  352.             var act = newTree.transformToArray(Nodes);  
  353.   
  354.   
  355.             var postdata = new Array();  
  356.   
  357.   
  358.             for (var i = 0; i < act.length; i++) {  
  359.                 if (!act[i].pId && typeof (act[i].pId) != "undefined") {  
  360.                     act[i].pId = 0;  
  361.                 }  
  362.   
  363.   
  364.                 postdata[i] = { id: act[i].id, pId: act[i].pId, name: act[i].name, level: act[i].level, marketName: act[i].marketName };  
  365.             }  
  366.   
  367.   
  368.             var postData = $.toJSON(postdata);  
  369.             $("#HiddenTreeInfo_Json").attr("value", postData);  
  370.   
  371.   
  372.             //            $.ajax({  
  373.             //                url: '<%= Url.Action("SaveTree") %>',  
  374.             //                type: 'POST',  
  375.             //                //                dataType: 'json',  
  376.             //                data: 'TreeNodes=' + postData,  
  377.             //                success: function (data) {  
  378.             //                    alert(data.Msg);  
  379.             //                }  
  380.             //            });  
  381.   
  382.   
  383.             $(document.forms[0]).ajaxSubmit({  
  384.                 url: '<%= Url.Action("SaveTree")%>',  
  385.                 success: function (data) {  
  386.                     alert(data.Msg);  
  387.                     if (data.Result == "1") {  
  388.                         $(document.forms[0]).submit();  
  389.                     }  
  390.                 }  
  391.             });  
  392.         });  
  393. </script>  

  1.   
  1. [HttpPost]  
  2. public JsonResult SaveTree(ComponentIndexModel model, string TreeNodes)  
  3. {  
  4.   
  5.   
  6.     try  
  7.     {  
  8.         string brandname = model.TXTbrand;  
  9.         int productId;  
  10.   
  11.   
  12.         ComponentManageProxy component = new ComponentManageProxy();  
  13.         IBrandRepository<BrandRow> _BrandRepository = new BrandRepository<BrandRow>();  
  14.         BrandRow row = _BrandRepository.GetBrandByName(brandname);  
  15.   
  16.   
  17.         if (row == null)  
  18.         {  
  19.   
  20.   
  21.             row = new BrandRow();  
  22.   
  23.   
  24.             row.BrandName = brandname;  
  25.   
  26.   
  27.             row.UniqueID = Guid.NewGuid();  
  28.             row.BrandType = model.ProductType ? 1 : 0;  
  29.   
  30.   
  31.             _BrandRepository.AddBrand(row);  
  32.   
  33.   
  34.         }  
  35.   
  36.   
  37.   
  38.   
  39.         ProductRepository<ProductRow> _ProductRepository = new ProductRepository<ProductRow>();  
  40.   
  41.   
  42.         if (model.hidden_product != null)  
  43.         {  
  44.             ProductRow _row = _ProductRepository.GetProductByName(model.hidden_product);  
  45.             if (_row == null)  
  46.             {  
  47.                 _row = new ProductRow();  
  48.                 _row.UniqueID = Guid.NewGuid();  
  49.                 _row.ProductName = model.hidden_product;  
  50.                 _row.ComponentTreeID = Guid.NewGuid();  
  51.                 _row.BrandName = brandname;  
  52.                 _ProductRepository.AddProduct(_row);  
  53.                 _row = _ProductRepository.GetProductByUniqueID(_row.UniqueID);  
  54.   
  55.   
  56.                 productId = _row.ID;  
  57.             }  
  58.             else  
  59.             {  
  60.                 //productId = int.Parse(model.Product);  
  61.                 productId = _row.ID;  
  62.                 if (productId.ToString() != model.Product)  
  63.                 {  
  64.                     return Json(new  
  65.                     {  
  66.                         Msg = "The product is already exsit.",  
  67.                         Result = "2",  
  68.                     });  
  69.                 }  
  70.             }  
  71.         }  
  72.         else  
  73.         {  
  74.             productId = int.Parse(model.Product);  
  75.         }  
  76.   
  77.   
  78.         //component.DeleteTree(productId);  
  79.   
  80.   
  81.         ProductManage Producttarget = new ProductManage(_ProductRepository);  
  82.         ProductRow _Product = _ProductRepository.GetProductByID(productId);  
  83.         //component.GetAllComponentNodes(_Product.ComponentTreeID);  
  84.   
  85.   
  86.         IComponentRepository<ComponentRowwithMultipleLCA> _ComponentBackupRepo = new ComponentRepository<ComponentRowwithMultipleLCA>();  
  87.         IComponentTreeNodeRepository<ComponentTree> _NodeBackupRepo = new ComponentTreeNodeRepository<ComponentTree>();  
  88.         IComponentTreeNodeCompoundRepository<ComponentTreeCompound> _TreeBackupRepo = new ComponentTreeCompoundRepository<ComponentTreeCompound>();  
  89.   
  90.   
  91.   
  92.   
  93.         IList<ComponentTreeCompound> _TreeBackupList = _TreeBackupRepo.GetAllComponentNodes(_Product.ComponentTreeID);  
  94.         JavaScriptSerializer jss = new JavaScriptSerializer();  
  95.         List<array> nodelist = new List<array>();  
  96.         IList<ComponentTreeCompound> _MarketSpecificNodeList;  
  97.         if (model.Market == "General") _MarketSpecificNodeList = _TreeBackupList.Where(x => (x.Level == 3 && x.MarketName != "General" && (x.Name != null && x.Name != String.Empty))).ToList();  
  98.         else _MarketSpecificNodeList = _TreeBackupList.Where(x => (x.Level == 3 && (x.MarketName != "General" && x.MarketName != model.Market && (x.Name != null && x.Name != String.Empty)))).ToList();  
  99.   
  100.   
  101.         //nodelist = jss.Deserialize(TreeNodes, typeof(List<array>)) as List<array>;  
  102.         nodelist = jss.Deserialize(model.TreeInfo_Json, typeof(List<array>)) as List<array>;  
  103.   
  104.   
  105.         foreach (var node in nodelist)  
  106.         {  
  107.   
  108.   
  109.             if (_TreeBackupList.Count == 0)  
  110.             {  
  111.                 //if (node.level == 2)  
  112.                 //{  
  113.                 //inserttodb()  
  114.                 ComponentRowwithMultipleLCA componentRow = new ComponentRowwithMultipleLCA();  
  115.   
  116.   
  117.                 componentRow.UniqueID = Guid.NewGuid();  
  118.                 componentRow.AssignedID = node.id;  
  119.                 componentRow.ComponentName = GetNameWithoutMarket(node.name);  
  120.                 componentRow.MarketName = (node.marketName == null || node.marketName == "") ? "General" : node.marketName;  
  121.                 if (node.level == 0) { componentRow.Description = "root"; }  
  122.   
  123.   
  124.                 //component.AddComponentTreeNode(componentRow, _ParentUniqueID, _RootID, level);  
  125.                 component.AddCompoment(componentRow, productId, node.pId, node.level + 1);  
  126.             }  
  127.             else  
  128.             {  
  129.                 if (node.level != 2)  
  130.                 {  
  131.                     if (node.level == 1)  
  132.                     {  
  133.   
  134.   
  135.                         IList<ComponentTreeCompound> _nodeEnum = _MarketSpecificNodeList.Where(i => (i.PId == node.id && i.RootID == _Product.ComponentTreeID)).ToList();  
  136.                         foreach (ComponentTreeCompound o in _nodeEnum)  
  137.                         {  
  138.                             ComponentTreeCompound obj1 = o;  
  139.                             //UpdateModel;  
  140.                             ComponentRowwithMultipleLCA __row = _ComponentBackupRepo.FindComponentByUniqueID(obj1.UniqueID);  
  141.                             __row.ComponentName = node.name;  
  142.                             //_ComponentBackupRepo.UpdateComponent(__row);  
  143.                             _MarketSpecificNodeList.Remove(obj1);  
  144.                             ComponentTreeCompound _MarketSpecificnode = _TreeBackupList.First(i => (i.Sid == obj1.Sid && i.RootID == _Product.ComponentTreeID));  
  145.                             _TreeBackupList.Remove(_MarketSpecificnode);  
  146.   
  147.   
  148.                         }  
  149.                     }  
  150.                     ComponentTreeCompound _node = _TreeBackupList.First(i => (i.Sid == node.id && i.RootID == _Product.ComponentTreeID));  
  151.                     _TreeBackupList.Remove(_node);  
  152.                 }  
  153.                 if (node.level == 2)  
  154.                 {  
  155.                     IList<ComponentTreeCompound> _nodeEnum = _TreeBackupList.Where(i => (i.Sid == node.id && i.RootID == _Product.ComponentTreeID)).ToList();  
  156.                     if (_nodeEnum.Count >= 1)  
  157.                     {  
  158.                         ComponentTreeCompound obj1 = _nodeEnum.First();  
  159.                         //UpdateModel;  
  160.                         ComponentRowwithMultipleLCA __row = _ComponentBackupRepo.FindComponentByUniqueID(obj1.UniqueID);  
  161.                         __row.ComponentName = node.name;  
  162.                         //_ComponentBackupRepo.UpdateComponent(__row);  
  163.                         _TreeBackupList.Remove(obj1);  
  164.                     }  
  165.   
  166.   
  167.                     else  
  168.                     {  
  169.                         ComponentRowwithMultipleLCA componentRow = new ComponentRowwithMultipleLCA();  
  170.   
  171.   
  172.                         componentRow.UniqueID = Guid.NewGuid();  
  173.                         componentRow.AssignedID = node.id;  
  174.                         componentRow.ComponentName = GetNameWithoutMarket(node.name);  
  175.                         componentRow.MarketName = (node.marketName == null || node.marketName == "") ? "General" : node.marketName;  
  176.                         if (node.level == 0) { componentRow.Description = "root"; }  
  177.   
  178.   
  179.                         component.AddCompoment(componentRow, productId, node.pId, node.level + 1);  
  180.                     }  
  181.                 }  
  182.             }  
  183.   
  184.   
  185.   
  186.   
  187.         }  
  188.   
  189.   
  190.   
  191.   
  192.   
  193.   
  194.   
  195.   
  196.         foreach (ComponentTreeCompound ob in _TreeBackupList)  
  197.         {  
  198.             //delete  
  199.             _NodeBackupRepo.DeleteComponentTreeNodeByComponentUniqueID(ob.TreeNodeUniqueID);  
  200.             _ComponentBackupRepo.DeleteComponent(ob.UniqueID);  
  201.   
  202.   
  203.         }  
  204.   
  205.   
  206.         return Json(new  
  207.         {  
  208.             Msg = "The hierachy definition was saved.",  
  209.             Result = "1",  
  210.         });  
  211.     }  
  212.     catch (Exception e)  
  213.     {  
  214.         return Json(new  
  215.         {  
  216.             Msg = "The hierachy definition was saved unsucessful. " + e.Message,  
  217.             Result = "0",  
  218.         });  
  219.     }  
  220.   
  221.   
  222. }  



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多