读书人

递归TreeView解决办法

发布时间: 2013-09-13 21:12:00 作者: rapoo

递归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);
}
}
}
}

读书人网 >C#

热点推荐