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

        }

  • 相关阅读:
    IO编程__字节流__输入
    IO编程__文件夹处理__显示文件夹下所有文件名称
    IO编程__文本文件处理
    IO编程__文件对象
    画坦克__线程__V2__第二种方式调用
    画坦克__线程__V1__第一种方法创造线程
    画坦克__敌人坦克
    画坦克__坦克可移动
    【自动化__GUI自动化】__java__selenium__断言__表格标题内容断言
    选项框
  • 原文地址:https://www.cnblogs.com/GGLoner/p/6830397.html
Copyright © 2011-2022 走看看