• 三种方式实现递归树加载


    1、数据库实现:

    可以将此段数据库代码修改为存储过程实现:

    with temp
    as
    (SELECT * FROM EKP_Module WHERE mod_parentid = 2165
    UNION ALL
    SELECT m.* FROM EKP_Module AS m
    INNER JOIN temp AS child ON m.mod_parentid = child.mod_id
    )

    select * from temp

    2、Linq to Sql实现:

    public IEnumerable<APPModuleInfo> GetModulesByPID(int p_id)
    {
    IQueryable<APPModuleInfo> mods = from m in ekpEntities.EKP_MODULE
    where m.mod_parentid == p_id
    select new APPModuleInfo
    {
    ModId = m.mod_id,
    ModLink = m.ModLink,
    ModName = m.mod_name,
    ModParentId = m.mod_parentid
    };

    return mods.ToList().Concat(mods.ToList().SelectMany(m => GetModulesByPID(m.ModId)));
    }

    3、常规方式实现:

    public void AddTree(string ParentID, TreeNode pNode)
        {
            if (ds.Tables.Count > 0)
            {
                DataView dvTree = new DataView(ds.Tables[0]);
                //过滤ParentOrgID,得到当前的所有子节点   
                dvTree.RowFilter = "[IndexParentID]   =   '" + ParentID + "' and [StatusFlag]='1'";
                foreach (DataRowView Row in dvTree)
                {
                    TreeNode node = new TreeNode();
                    if (pNode == null)
                    {         //添加根节点   
                        node.Text = Row["IndexName"].ToString();
                        node.Value = Row["IndexID"].ToString();
                        TreeView1.Nodes.Add(node);
                        AddTree(Row["IndexID"].ToString(), node);         //再次递归   
                    }
                    else
                    {       //添加当前节点的子节点   
                        node.Text = Row["IndexName"].ToString();
                        node.Value = Row["IndexID"].ToString();
                        pNode.ChildNodes.Add(node);
                        AddTree(Row["IndexID"].ToString(), node);         //再次递归   
                    }
                }
                dvTree.Dispose();
                ds.Dispose();
            }

        }

  • 相关阅读:
    查看Sql Server2016 是否激活
    MSSQL 账户访问视图权限的设置
    Vue 前端验证码
    (攻防世界) -- pwn入门 -- 新手区1 -- CGfsb
    .NET Core自动注册服务
    C# Graphics 生成文字圆形头像
    Codeforces Round #729 (Div. 2) C. Strange Function
    Codeforces Round #710 (Div. 3) ABCDE 题解
    Codeforces Round #708 (Div. 2) ABC1C2题解
    Codeforces Round #706 (Div. 2) D. Let's Go Hiking 博弈 思维
  • 原文地址:https://www.cnblogs.com/GGLoner/p/6830397.html
Copyright © 2020-2023  润新知