//设定生成树的原始数据
void getdatable()
{
tblDatas.Columns.Add("groupid", Type.GetType("System.String"));
tblDatas.Columns.Add("groupname", Type.GetType("System.String"));
tblDatas.Columns.Add("parentid", Type.GetType("System.String"));
tblDatas.Rows.Add(new object[] { "1", "机关", "0" });
tblDatas.Rows.Add(new object[] { "2", "学院", "0" });
tblDatas.Rows.Add(new object[] { "3", "教学管理中心", "1" });
tblDatas.Rows.Add(new object[] { "4", "校园管理中心", "1" });
tblDatas.Rows.Add(new object[] { "5", "数据中心", "3" });
tblDatas.Rows.Add(new object[] { "6", "信息中心", "3" });
tblDatas.Rows.Add(new object[] { "7", "一卡通", "4" });
tblDatas.Rows.Add(new object[] { "8", "保卫处", "4" });
tblDatas.Rows.Add(new object[] { "9", "信工系", "2" });
tblDatas.Rows.Add(new object[] { "10", "艺术系", "2" });
dataGridView1.DataSource = tblDatas;
}
//递归生成树函数
public void AddTree(int ParentID, TreeNode pNode)
{
DataTable dt = new DataTable();
dt = tblDatas;
DataView dvTree = new DataView(dt);
//过滤ParentID,得到当前的所有子节点
dvTree.RowFilter = "parentid = " + ParentID;
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null)
{
//添加根节点
Node.Text = Row["groupname"].ToString();
treeView1.Nodes.Add(Node);
AddTree(Int32.Parse(Row["groupid"].ToString()), Node); //再次递归
}
else
{
//添加当前节点的子节点
Node.Text = Row["groupname"].ToString();
pNode.Nodes.Add(Node);
AddTree(Int32.Parse(Row["groupid"].ToString()), Node); //再次递归
2019-12-21 20:36:53
38KB
递归树生成
1