现在我有一个list1:里面存有树的头结点的名称:比如存有“1”,“2”,“3”...;
有一个getChildren(string name)方法,比如通过getChildren(1) 能够返回一个list3:存有1下面的子节点:4,5....
如此类推,没有则返回空。现在我要将他们在treeview中显示出来 还请指教??
有一个getChildren(string name)方法,比如通过getChildren(1) 能够返回一个list3:存有1下面的子节点:4,5....
如此类推,没有则返回空。现在我要将他们在treeview中显示出来 还请指教??
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
using System.Text;namespace 企业人事管理系统
{
class Public_Fun
{
#region[公共变量]
DataSet DS;
DataTable DT;
SQL_Link Link = new SQL_Link();
bool Tree_Node_P = false;
#endregion #region[函数] [TreeView递归函数]
软件开发网
#region [函数] [树型2级显示]
public void Fun_Tree(TreeView TREE,SqlConnection Link_Conn)
{
DS = Link.SQL_Select("select * from Basic_Bm", Link_Conn);
DT = DS.Tables[0];
if (Tree_Node_P == false)
{
foreach (DataRow DR in DT.Rows)
{
if (DR.ItemArray[1].ToString() == "0")
{
TreeNode TN = new TreeNode();
TN.Text = DR.ItemArray[0].ToString();
TREE.Nodes.Add(TN);
}
http://www.mscto.com }
Tree_Node_P = true;
} foreach (DataRow DR_2 in DT.Rows)
{
foreach (TreeNode TN_2 in TREE.Nodes)
软件开发网
{
if (DR_2.ItemArray[1].ToString() == TN_2.Text)
{
TreeNode TN_3 = new TreeNode();
TN_3.Text = DR_2.ItemArray[0].ToString(); TN_2.Nodes.Add(TN_3);
Fun_Tree_2(TN_3);
}
}
}
}
#endregion #region [函数] [树型>3级递归]
public void Fun_Tree_2(TreeNode T_Name)
{
foreach (DataRow DR_2 in DT.Rows)
{
if (DR_2.ItemArray[1].ToString() == T_Name.Text)
{
TreeNode TN_3 = new TreeNode();
TN_3.Text = DR_2.ItemArray[0].ToString();
T_Name.Nodes.Add(TN_3);
Fun_Tree_2(TN_3);
}
}
}
#endregion #endregion
}
}
{
if (tnParent == null) return null;
if (tnParent.Tag.ToString() == strValue) return tnParent;//找到节点 TreeNode tnRet = null;
foreach (TreeNode tn in tnParent.Nodes)//继续遍历
{
tnRet = FindNode(tn, strValue);
if (tnRet != null) break;
}
return tnRet;
}
TreeNode node = FindNode(treeViewFolder.Nodes[0],fatherName);//找父节点
if (node != null)
{
node.Nodes.Add(childNode);在父节点下添加子节点
}
表treeTest有3列
节点名“nodeName”,节点ID“ID”,父节点ID“parentNodeID”递归绑定树结构: using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient; namespace 我的树结构
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
bindTree();
}
IList <classTree> ListTree;//全局变量,classTree为实体类
private void bindTree()
{
SqlConnection con = new SqlConnection("server=.;database=DBzealot;integrated security=SSPI;");
SqlCommand cmb = new SqlCommand("select *from treeTest", con);
SqlDataReader reader;
con.Open();
reader = cmb.ExecuteReader();
ListTree = new List <classTree>();
while (reader.Read())
{
classTree csTree = new classTree();
csTree.ID = (int)reader["ID"];
csTree.Name = (string)reader["nodeName"];
if (reader["parentNodeID"] != DBNull.Value)
{
csTree.ParenID = (int)reader["parentNodeID"];
}
ListTree.Add(csTree);
}
con.Close();
int i;
for (i = 0; i < ListTree.Count; i++)
{
if (ListTree[i].ParenID == 0)
{
TreeNode rootNode = new TreeNode();
rootNode.Text = ListTree[i].Name + ",子节点数:0";//默认的子节点数量为0
rootNode.Tag = ListTree[i];
treeView1.Nodes.Add(rootNode);
addNodes(rootNode);//调用递归方法
}
}
}
private int addNodes(TreeNode node)//参数为父节点
{
int count = 0;
int childCount = 0;
classTree csTr = (classTree)node.Tag; for (int i = 0; i < ListTree.Count; i++)
{
if (csTr.ID == ListTree[i].ParenID)
{
++count;
TreeNode childNode = new TreeNode();
childNode.Text = ListTree[i].Name + ",子节点数:0";
childNode.Tag = ListTree[i];
node.Nodes.Add(childNode);//添加子节点
childCount+=addNodes(childNode);//在这里递归,返回子节点的所有子节点数量
}
}
node.Text = csTr.Name + ",子节点数:" + Convert.ToString(childCount + count);//给父节点赋值
csTr.KidCount = childCount + count;
node.Tag = csTr;
return childCount + count;//返回父节点的所有子节点数量
} private void button1_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode != null)
{
classTree tree = (classTree)treeView1.SelectedNode.Tag;
MessageBox.Show(tree.Name + ":子节点数为" + tree.KidCount.ToString(), "我的树结构");
return;
}
MessageBox.Show("请选中一个节点", "我的树结构");
} }
}
{
if(root == null)
throw new Exception("Root can not be null");
foreach (object obj in a)
{
TreeNode node = new TreeNode(a.ToString());
root.Nodes.Add(node);
ArrayList children = getChildren(a.ToString());
BuildTreeView(children, ref node);//加子节点
}
}