zoukankan      html  css  js  c++  java
  • 递归呀递归,简单的2种方法=前端js一个普通list递归+前端js一个树结构数据(Ztree)的获取当前选中节点的所有无子节点的叶子节点的递归(return result)+后端C#一个递归

    1.摆数据源

    2.前端js递归==>对SUM动态计算值,将算力放在前端浏览器

        //===>调用递归的函数--获取原始数据+调用递归
         function gettreeList() {
            $.ajax({
                url: "/B_Certificate/GetTreeData",//发送请求的地址  
                type: "POST",// POST,默认是GET  
                dataType: 'json',//根据返回数据类型可以有这些类型可选:xml html script json jsonp text
                async: true,//是否异步请求
                success: function (data) {//请求成功  
                    setNodeChildren(-1, data)
                    console.log(data)
                },
            });
        }
        //===>递归函数
        //对SUM动态计算值,算力转移至前端浏览器
    PS:treeList必须是list或数组格式的数据比如![](https://img2020.cnblogs.com/blog/1261986/202012/1261986-20201202163936427-640132967.png)
    
        function setNodeChildren(pid, treeList) {
            for (var i = 0; i < treeList.length; i++) {
                if (treeList[i].PID == pid) {
                    setNodeChildren(treeList[i].ID, treeList)
                }
            }
        //以下为递归到最终节点的操作
            for (var j = 0; j < treeList.length; j++) {
                if (pid == treeList[j].ID) {
    
                    for (var n = 0; n < treeList.length; n++) {
                        if (treeList[n].ID == treeList[j].PID) {
                            treeList[n].SUM += treeList[j].SUM
                        }
                    }
                }
            }
        }
    
    
    2.5:前端js一个树结构数据(Ztree)的获取当前选中节点的所有无子节点的叶子节点的递归(return result)
    
    console.log(treeNode);
    var str = '';
    str= getAllChildrenNodes(treeNode,str);
    console.log(str);
    
    function getAllChildrenNodes(treeNode, result) {
    if (treeNode.isParent) {
    var childrenNodes = treeNode.children;
    if (childrenNodes) {
    for (var i = 0; i < childrenNodes.length; i++) {
    result = getAllChildrenNodes(childrenNodes[i], result);
    }
    return result;
    }
    }
    result += ',' + treeNode.ID;
    return result;
    }
    ![](https://img2020.cnblogs.com/blog/1261986/202012/1261986-20201202213718211-596797968.png)
    
     ,348,351,355,349,354,353
    

    3.后端C#递归==>后端直接生成数据

    
     //递归
            public void setTreeData(string pid,DataTable dt)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    if (dt.Rows[i]["PID"].ToString()== pid)
                    {
                        setTreeData(dt.Rows[i]["ID"].ToString(), dt);
                    }
                }
        //以下为递归到最终节点的操作
                for (int n = 0; n < dt.Rows.Count; n++)
                {
                    //找到最终子节点
                    if (dt.Rows[n]["ID"].ToString()==pid)
                    {
                        for (int m = 0; m < dt.Rows.Count; m++)
                        {
                            //找到父节点
                            if (dt.Rows[m]["ID"].ToString()== dt.Rows[n]["PID"].ToString())
                            {
                                //将最终子节点的SUM+=给父节点的SUM
                                dt.Rows[m].BeginEdit();//开始编辑行
                                dt.Rows[m]["SUM"] = Convert.ToInt32(dt.Rows[m]["SUM"]) + Convert.ToInt32(dt.Rows[n]["SUM"]);
                                dt.Rows[m].EndEdit();//结束编辑
                                dt.AcceptChanges();//保存修改的结果。
                            }
                        }
    
                    }
                }
            }
    
    
    
  • 相关阅读:
    CSS3_02之2D、3D动画
    CSS3_01之选择器、Hack
    css_04之显示、定位
    css_03之文本、浮动
    css_02之盒模型、渐变
    javascript获取非行间样式的方法(可以兼容各个浏览器)
    gulp的用法
    grunt的用法
    grunt
    git用法
  • 原文地址:https://www.cnblogs.com/jsll/p/13895615.html
Copyright © 2011-2022 走看看