• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C#递归产生树

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
   //递归产生树
        private void CreateTwo(TreeNode node, int id)
        {
            #region --根据指定ID查找数据到 dt
            string strSql = "select * from Menu where MenuParent = " + id;
            DataTable dt = SqlHelper.ExecuteDatatable(strSql);
            #endregion

            if (id == 0)                                             // id = 0 是根节点 
            {
                for (int i = 0; i < dt.Rows.Count; i++) //先查询PID=0的
                {
                    TreeNode nd = new TreeNode();
                    nd.Text = dt.Rows[i]["MenuName"].ToString();
                    CreateTwo(nd, Convert.ToInt32(dt.Rows[i]["MenuId"].ToString())); //把根节点ID传过去查找PID是该id的子节点
                    treeView1.Nodes.Add(nd);
                }
            }
            else
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    TreeNode Tnode = new TreeNode();
                    Tnode.Text = dt.Rows[i]["MenuName"].ToString();
                    CreateTwo(Tnode, Convert.ToInt32(dt.Rows[i]["MenuId"].ToString()));
                    node.Nodes.Add(Tnode);
                }
            }
        }

 非递归绑定3级别

        //绑定TrreView
        private void InitModuleTree(DataTable dt)
        {
            //清空treeview上所有节点
            this.treeView1.Nodes.Clear();

            //先绑定父节点
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                int Prent = Convert.ToInt16(dt.Rows[i]["MenuParent"]);//
                if (Prent == 0) //先绑定父节点
                {
                    TreeNode nodeParent = new TreeNode();
                    nodeParent.Tag = dt.Rows[i]["MenuId"];//设置一个值,为加入子节点做准备,(先这样用,不管Tag是什么)
                    nodeParent.Text = dt.Rows[i]["MenuName"].ToString();
                    treeView1.Nodes.Add(nodeParent);
                }
            }
            //在绑定子节点(绑定2级目录)
            foreach (TreeNode item in treeView1.Nodes)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    var ss = dt.Rows[i]["MenuParent"]; //获取pid
                    var s1 = item.Tag;
                    if ((int)item.Tag == (int)dt.Rows[i]["MenuParent"]) //dt该行的pid = 这个父节点ID (表示属该行子节点)
                    {
                        TreeNode childNode = new TreeNode();
                        childNode.Tag = dt.Rows[i]["MenuId"];
                        childNode.Text = dt.Rows[i]["MenuName"].ToString();
                        item.Nodes.Add(childNode); //加入父节点中
                    };

                }
            }
            //在绑定子节点(绑定3级目录)
            foreach (TreeNode item1 in treeView1.Nodes)
            {
                int index0 = treeView1.Nodes.IndexOf(item1); //index 为索引值
                var nodes1 = treeView1.Nodes[index0].Nodes;

                foreach (TreeNode item in nodes1)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        var ss = dt.Rows[i]["MenuParent"]; //获取pid
                        var s1 = item.Tag;

                        if ((int)item.Tag == (int)dt.Rows[i]["MenuParent"]) //dt该行的pid = 这个父节点ID (表示属该行子节点)
                        {
                            TreeNode childNode = new TreeNode();
                            childNode.Tag = dt.Rows[i]["MenuId"];
                            childNode.Text = dt.Rows[i]["MenuName"].ToString();
                            item.Nodes.Add(childNode); //加入父节点中
                        };

                    }
                }
            }

            treeView1.ExpandAll();      //展开整棵树
        }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#检测代码耗时发布时间:2022-07-18
下一篇:
用C#播放声音文件发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap