C#treeview树形菜单

/// <summary>
        ///TrreView数据绑定
        /// </summary>
        /// <param name="dt">获取datatable数据</param>
        private void InitModuleTree(DataTable dt)
        {
            //清空treeview上所有记录
            this.TRole.Nodes.Clear();
            
            int[] father_node= new int[dt.Rows.Count];
            int[] child_node= new int[dt.Rows.Count];

            string account = Convert.ToString(user_Info.account);
            DataTable dtqx = slmenubll.GetData("*", "Library.dbo.czy_role_authority", "where account='" + account + "'");

            for (int i = 0; i < father_node.Length; i++)
            {
                //父级菜单
                string node= dt.Rows[i][2].ToString();
                //子集菜单
                int child= int.Parse(dt.Rows[i][2].ToString());
                for (int j = 0; j < dtqx.Rows.Count; j++)//权限设置
                {
                    int it = int.Parse(dtqx.Rows[j][1].ToString());
                    if (child== it)
                    {
                        if (node.Length > 1)   //表示是子节点   eg:1-2
                        {
                        	//当前已【-】为父级菜单与子集菜单之间的分割
                            father_node[i] = int.Parse(node.Substring(0, node.IndexOf('-')));
                            child_node[i] = int.Parse(node.Substring(node.IndexOf('-') + 1));
                        }
                        else 
                        {
                            //获取到所有父级菜单项
                            child_node[i] = int.Parse(node);
                            TreeNode nodeParent = new TreeNode();
                            nodeParent.Tag = (child_node[i]).ToString();
                            nodeParent.Text = dt.Rows[i][0].ToString();
                            TRole.Nodes.Add(nodeParent);
                        }
                        break;
                    }
                }
            }
            bindChildNote(dt, father_node, child_node);
        }
        /// <summary>
        /// 绑定子级菜单
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="father_node">父级菜单</param>
        /// <param name="child_node">子集菜单</param>
        private void bindChildNote(DataTable dt, int[] father_node, int[] child_node)
        {
            for (int i = 0; i < father_node.Length; i++)
            {
                if (father_node[i] != 0 && child_node[i] != 0)        //便利所有节点,找到所有子节点
                {
                    TreeNode childNode = new TreeNode();
                    foreach (TreeNode item in tree_Role.Nodes)   //便历treeview上所有父节点
                    {
                       //获取子级菜单上的父级菜单
                        if (item.Tag.ToString() == father_node[i].ToString())
                        {
                            childNode.Tag = child_node[i].ToString();
                            childNode.Text = dt.Rows[i][0].ToString();
                            item.Nodes.Add(childNode);
                        }
                    }
                }
            }
            //生成树形图
            TRole.ExpandAll();
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值