C# 递归显示 TreeView 树状菜单树!



        /// <summary>
        /// 初始化显示树型菜单
        /// </summary>
        private void showTreeviewMenu()
        {
            string str = "select * from menu order by level_code";
            tempTypeDao = new TemplateTypeDAO();
            dtNode = tempTypeDao.Select(str);


            DataRow[] drs = dtNode.Select(" pid is null");


            foreach (DataRow dr in drs)
            {
                //这是在找数据库中的节点
                TreeNode node = new TreeNode();
                node.Text = dr["name"].ToString();
                node.Tag = dr["ID"].ToString();
                this.treeView1.Nodes.Add(node);//把指定节点添加到控件中 
                bindtree(node.Tag.ToString(),node);
            }


 

        }




        /// <summary>
        /// 查找根节点(parent_ID为0的节点)的子节点
        /// </summary>
        /// <param name="parent_ID">参数,接收根节点ID</param>
        private void Bindtree(string parent_ID,TreeNode rootnode)
        {
            DataRow[] drs = Getdata(parent_ID);
            if (drs.Length > 0)
            {
                for (int i = 0; i < drs.Length; i++)
                {
                    //这是在找数据库中的节点
                    TreeNode node = new TreeNode();
                    node.Text = drs[i]["name"].ToString();
                    node.Tag = drs[i]["ID"].ToString();
                    rootnode.Nodes.Add(node);//把指定节点添加到控件中


                    Bindnode(node);
                }
            }
        }


        /// <summary>
        /// 递归遍历指定节点下的子节点
        /// </summary>
        /// <param name="nd">参数,接收节点对象</param>
        private void Bindnode(TreeNode nd)
        {
            DataRow[] ds = Getdata(nd.Tag.ToString());
            for (int i = 0; i < ds.Length; i++)
            {
                TreeNode node = new TreeNode();
                node.Text = ds[i]["name"].ToString();
                node.Tag = ds[i]["ID"].ToString();


                nd.Nodes.Add(node);//把指定节点添加到控件中


                Bindnode(node);
            }
        }


        /// <summary>
        /// 从数据库中查找指定节点(ID)的子节点
        /// </summary>
        /// <param name="ID">参数,接收父节点ID</param>
        /// <returns>返回DataSet</returns>
        private DataRow[] Getdata(string pID) //在这里我们传入一个parent_ID
        {


            DataRow[] dt = dtNode.Select(" pid='" + pID + "'") ;
             
            return dt; //返回含有ID的数据
        }



最后在,form的load事件中,加上方法调用函数

       showTreeviewMenu();


最终效果如图:



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值