首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

递归TreeView解决办法

2013-09-13 
递归TreeView递归,先加载部门节点,在加载上级ID节点,就是1级1级的,我写出来总有问题,请一个递归的方法。。实

递归TreeView
递归,先加载部门节点,在加载上级ID节点,就是1级1级的,我写出来总有问题,请一个递归的方法。。
递归TreeView解决办法


实现很简单,代码就不注释了,自己参考下吧


using System;
using System.Windows.Forms;
using System.Data;

namespace Demo
{
    public partial class Form1 : Form
    {
        TreeView treeView = new TreeView();
        public Form1()
        {
            InitializeComponent();
            SetupControl();
        }

        private void SetupControl()
        {
            DataTable dt = new DataTable();
            dt.Columns.AddRange(
            new DataColumn[]{
                    new DataColumn("员工ID"),
                    new DataColumn("上级ID"),
                    new DataColumn("员工姓名"),
                    new DataColumn("部门")
                }
            );

            string[][] data =
            {
                new string[]{"1","0","AX","生产部"},


                new string[]{"2","0","BX","测试部"},
                new string[]{"3","1","CX","生产部"},
                new string[]{"4","3","DX","生产部"},
                new string[]{"5","4","EX","生产部"},
                new string[]{"6","2","FX","测试部"},
                new string[]{"7","6","GX","测试部"}
            };

            for (int i = 0; i < data.GetLength(0); i++)
            {
                DataRow row = dt.NewRow();
                row[0] = data[i][0];
                row[1] = data[i][1];
                row[2] = data[i][2];
                row[3] = data[i][3];
                dt.Rows.Add(row);
            }

            CreateTree(dt);
        }

        private void CreateTree(DataTable dt)
        {
            DataRow[] rows = dt.Select("上级ID=0");
            foreach (DataRow row in rows)
            {
                TreeNode root = new TreeNode();
                root.Text = row[3].ToString();
                root.Name = row[0].ToString();



                TreeNode node = new TreeNode();
                node.Text = row[2].ToString();
                node.Name = row[0].ToString();

                CreateSubTree(dt,node);

                root.Nodes.Add(node);
                treeView.Nodes.Add(root);
            }

            treeView.Dock = DockStyle.Fill;
            this.Controls.Add(treeView);
        }

        private void CreateSubTree(DataTable dt,TreeNode parentNode)
        {
            DataRow[] rows = dt.Select("上级ID='"+parentNode.Name+"'");
            if (rows.Length == 0)
            {
                return;
            }
            foreach (DataRow row in rows)
            {
                TreeNode node = new TreeNode();
                node.Text = row[2].ToString();
                node.Name = row[0].ToString();
                parentNode.Nodes.Add(node);

                CreateSubTree(dt,node);
            }
        }
    }
}

热点排行