winform treeView1 递归 显示 父子级别

 public Form1()
        {
            InitializeComponent();
        }
        List<Orag> list = new List<Orag>();
        private void Form1_Load(object sender, EventArgs e)
        {
            list = new List<Orag> {
                new Orag(1, 0, "上海公司"),
                new Orag(2, 0, "北京公司"),
                new Orag(3, 1, "上海公司1"),
                new Orag(4, 2, "上海公司2"),
                new Orag(5, 3, "上海公司2-1"),
                new Orag(6, 4, "北京公司0"),
                new Orag(7, 5, "北京公司1"),
                new Orag(8, 6, "北京公司2"),
                new Orag(9, 2, "北京公司3") };

            Addnode();
        }
        public void Addnode()
        {
            for (int i = 0; i < list.Count; i++)
            {
                if (list[i].pid == 0)
                {
                    TreeNode pnode = new TreeNode();
                    pnode.Text = list[i].name;
                    pnode.Tag = list[i].id;
                    treeView1.Nodes.Add(pnode);
                    AddChildnode(list[i].id, pnode);
                }
            }
        }

        public void AddChildnode(int pid, TreeNode pnode)
        {
            for (int i = 0; i < list.Count; i++)
            {
                if (list[i].pid == pid)
                {
                    TreeNode cnode = new TreeNode();
                    cnode.Text = list[i].name;
                    cnode.Tag = list[i].id;
                    pnode.Nodes.Add(cnode);
                    AddChildnode(list[i].id, cnode);
                }
            }
        }

        public class Orag
        {
            public int id { get; set; }
            public int pid { get; set; }
            public string name { get; set; }

            public Orag(int id, int pid, string name)
            {
                this.id = id;
                this.pid = pid;
                this.name = name;
            }
        }

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            MessageBox.Show(treeView1.SelectedNode.Tag.ToString());
        }

 

数据库查询使用

 public void GridView()
        {
            this.treeView1.Nodes.Clear();
            DataTable company = db.Queryable<Base_Company>().ToDataTable();
            DataTable client = db.Queryable<Base_Client>().ToDataTable();
            foreach (DataRow dr in company.Rows)
            {
                //部门表绑定,作为一级层次
                TreeNode tn_origine = new TreeNode();
                tn_origine.Text = dr["ClientName"].ToString();
                this.treeView1.Nodes.Add(tn_origine);
                //用户表绑定
                DataRow[] dr_arr = client.Select();
                if (dr_arr.Length > 0)
                {
                    foreach (DataRow dr_sub in dr_arr)
                    {
                        TreeNode tn_sub = new TreeNode();
                        tn_sub.Text += dr_sub["ClientId"].ToString();
                        tn_sub.Text += dr_sub["ClientName"].ToString();
                        tn_origine.Nodes.Add(tn_sub);
                    }
                }
            }
        }

 

递归 数据库查询使用无限级

  private void FrmCompany_Load(object sender, EventArgs e)
        {
            list = db.Queryable<Base_Client>().ToList();
            Addnode();
           // GridView();
        }
        List<Base_Client> list = new List<Base_Client>();
        public void Addnode()
        {
            for (int i = 0; i < list.Count; i++)
            {
                if (list[i].ClientId == "000001")
                {
                    TreeNode pnode = new TreeNode();
                    pnode.Text = list[i].ClientName;
                    pnode.Tag = list[i].ClientId;
                    treeView1.Nodes.Add(pnode);
                    AddChildnode(list[i].ClientId, pnode);
                }
            }
        }

        public void AddChildnode(string pid, TreeNode pnode)
        {
            for (int i = 0; i < list.Count; i++)
            {
                if (list[i].ParentID == pid)
                {
                    TreeNode cnode = new TreeNode();
                    cnode.Text = list[i].ClientName;
                    cnode.Tag = list[i].ClientId;
                    pnode.Nodes.Add(cnode);
                    AddChildnode(list[i].ClientId, cnode);
                }
            }
        }

 

treeView1点击事件

 private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            if (Convert.ToInt32(e.Node.Level) > 0)
            {
                txt_ClientId.Text= e.Node.Tag.ToString();
                txt_ClientName.Text = e.Node.Text.ToString();
                // MessageBox.Show("您选择的部门是:" + e.Node.Text.ToString(), "信息提示!");
                //if (e.Node.Text.Trim() == "销售部门")   //如果当前节点的文本为“系统退出”
                //{
                //    MessageBox.Show("部门分类展开所有节点1!", "软件提示");
                //}
            }
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘欢(C#)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值