zoukankan      html  css  js  c++  java
  • 三种方式实现递归树加载

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

        }

  • 相关阅读:
    linux 下内存检查工具 valgrind 及 sanitizer 编译选项及静态检查工具
    jQuery中 inArray
    CLEAN crxMouse Gestures 插件被标记为不安全
    如何理解DMZ?
    如何完整备份浏览器数据(Chrome、Firefox)
    Windows 分屏工具
    JS监听H5返回
    华为账号安全性怎么样?
    IOS Safari keyup不生效如何解决?
    如何下载JD图片 不带logo图片?
  • 原文地址:https://www.cnblogs.com/GGLoner/p/6830397.html
Copyright © 2011-2022 走看看