c# treeView 树形结构递归处理(企业集团型层次树形展示)

做企业集团的层级展示时候,c#的树形控件尤为重要,如果层级过多,则需要递归处理。

1.这是一个层级表,第一列为单位编码,第二列为单位名称,第三列为上级单位。

dwbhdwmcsjgs
A000华美房产集团
A001华美房产集团A000
A002辽宁华美房产公司A001
A003安徽华美房产公司A001
A004四川华美房产公司A001
A005吉林华美房产公司A001
A006云南华美房产公司A001
A007河南华美房产公司A001
A008沈阳华美分公司A002
A009合肥华美分公司A003
A010大连华美分公司A002
A011成都华美分公司A004
A012昆明华美分公司A006
A013长春环美分公司A005
A014沈河房产公司A008
A015大东房产公司A008
A016铁西房产公司A008
A017中山房产公司A010

2.通过winform的树控件来展示列表。

3.代码(这里为了直观认识,手工加入公司行。在项目实施中则提取数据库的数据。)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            DataTable dt = new DataTable();
            dt.Columns.AddRange(new DataColumn[]{  
             new DataColumn("dwbh",typeof(string)),  
             new DataColumn("dwmc",typeof(string)),  
             new DataColumn("sjgs",typeof(string))});

            
            DataRow r = dt.NewRow();
            r[0] = string.Format("{0}", "A000");
            r[1] = string.Format("{0}", "华美房产集团");
            r[2] = string.Format("{0}", "");
            dt.Rows.Add(r);


            DataRow r0 = dt.NewRow();
            r0[0] = string.Format("{0}","A001");
            r0[1] = string.Format("{0}", "华美房产集团");
            r0[2] = string.Format("{0}", "A000");
            dt.Rows.Add(r0);

            DataRow r1 = dt.NewRow();
            r1[0] = string.Format("{0}","A002");
            r1[1] = string.Format("{0}", "辽宁华美房产公司");
            r1[2] = string.Format("{0}","A001");
            dt.Rows.Add(r1);

            DataRow r2 = dt.NewRow();
            r2[0] = string.Format("{0}","A003");
            r2[1] = string.Format("{0}", "安徽华美房产公司");
            r2[2] = string.Format("{0}","A001");
            dt.Rows.Add(r2);

            DataRow r3 = dt.NewRow();
            r3[0] = string.Format("{0}","A004");
            r3[1] = string.Format("{0}", "四川华美房产公司");
            r3[2] = string.Format("{0}","A001");
            dt.Rows.Add(r3);

            DataRow r4 = dt.NewRow();
            r4[0] = string.Format("{0}","A005");
            r4[1] = string.Format("{0}", "吉林华美房产公司");
            r4[2] = string.Format("{0}","A001");
            dt.Rows.Add(r4);

            DataRow r5 = dt.NewRow();
            r5[0] = string.Format("{0}","A006");
            r5[1] = string.Format("{0}", "云南华美房产公司");
            r5[2] = string.Format("{0}","A001");
            dt.Rows.Add(r5);

            DataRow r6 = dt.NewRow();
            r6[0] = string.Format("{0}","A007");
            r6[1] = string.Format("{0}", "河南华美房产公司");
            r6[2] = string.Format("{0}","A001");
            dt.Rows.Add(r6);

            DataRow r7 = dt.NewRow();
            r7[0] = string.Format("{0}", "A008");
            r7[1] = string.Format("{0}", "沈阳华美分公司");
            r7[2] = string.Format("{0}", "A002");
            dt.Rows.Add(r7);

            DataRow r8 = dt.NewRow();
            r8[0] = string.Format("{0}", "A009");
            r8[1] = string.Format("{0}", "合肥华美分公司");
            r8[2] = string.Format("{0}", "A003");
            dt.Rows.Add(r8);

            DataRow r9 = dt.NewRow();
            r9[0] = string.Format("{0}", "A010");
            r9[1] = string.Format("{0}", "大连华美分公司");
            r9[2] = string.Format("{0}", "A002");
            dt.Rows.Add(r9);

            DataRow r10 = dt.NewRow();
            r10[0] = string.Format("{0}", "A011");
            r10[1] = string.Format("{0}", "成都华美分公司");
            r10[2] = string.Format("{0}", "A004");
            dt.Rows.Add(r10);

            DataRow r11 = dt.NewRow();
            r11[0] = string.Format("{0}", "A012");
            r11[1] = string.Format("{0}", "昆明华美分公司");
            r11[2] = string.Format("{0}", "A006");
            dt.Rows.Add(r11);

            DataRow r12 = dt.NewRow();
            r12[0] = string.Format("{0}", "A013");
            r12[1] = string.Format("{0}", "长春环美分公司");
            r12[2] = string.Format("{0}", "a005");
            dt.Rows.Add(r12);

            DataRow r13 = dt.NewRow();
            r13[0] = string.Format("{0}", "A014");
            r13[1] = string.Format("{0}", "沈河房产公司");
            r13[2] = string.Format("{0}", "A008");
            dt.Rows.Add(r13);

            DataRow r14 = dt.NewRow();
            r14[0] = string.Format("{0}", "A015");
            r14[1] = string.Format("{0}", "大东房产公司");
            r14[2] = string.Format("{0}", "A008");
            dt.Rows.Add(r14);

            DataRow r15 = dt.NewRow();
            r15[0] = string.Format("{0}", "A017");
            r15[1] = string.Format("{0}", "中山房产公司");
            r15[2] = string.Format("{0}", "A010");
            dt.Rows.Add(r15);

            AddTree("A000", (TreeNode)null, dt);

        }


        public void AddTree(String ParentID, TreeNode pNode, DataTable table)
        {

            DataView dvTree = new DataView(table); //dtTree = dsFrame.Tables[0];
            string Fstr = "sjgs='" + ParentID + "'";
            dvTree.RowFilter = Fstr;
            treeView1.ImageList = this.imageList1;
            foreach (DataRowView Row in dvTree)
            {
                TreeNode Node = new TreeNode();
                if (pNode == null)          //处理主节点
                {
                    Node.Name = Row["dwbh"].ToString(); 
                    Node.Text = Row["dwbh"].ToString() + Row["dwmc"].ToString();
                    if ((Row["dwmc"].ToString()).Contains("华美")) 
                    {
                        Node.ImageIndex = 0;
                        Node.SelectedImageIndex = 0;
                    }
                    else if ((Row["dwmc"].ToString()).Contains("房产"))
                    {
                        Node.ImageIndex = 2;
                        Node.SelectedImageIndex = 2;
                    }
                    
                    treeView1.Nodes.Add(Node);  
                    AddTree(Row["dwbh"].ToString(), Node, table); //递归
                }
                else //处理子节点
                {
                    Node.Name = Row["dwbh"].ToString();
                    Node.Text = Row["dwbh"].ToString() + Row["dwmc"].ToString();
                    if ((Row["dwmc"].ToString()).Contains("华美")) 
                    {
                        Node.ImageIndex = 0;
                        Node.SelectedImageIndex = 0;
                    }
                    else if ((Row["dwmc"].ToString()).Contains("房产"))
                    {
                        Node.ImageIndex = 2;
                        Node.SelectedImageIndex = 2;
                    }
                  
                    pNode.Nodes.Add(Node);
                    AddTree(Row["dwbh"].ToString(), Node, table);
                }
            }

        }


        
    }
}

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IT技术与企业应用结合的爱好者

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

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

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

打赏作者

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

抵扣说明:

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

余额充值