玄龙戏珠无级树
private void 开花树() { /*下面自定义树顺序*/ 树.Nodes.Clear(); DataTable 表 = 加载数据(), 树表 = null; string[] 重组表列 = null; if (表.TableName == "人员") 重组表列 = new string[] { "归属", "姓名", "生日" }; if (表.TableName == "提示") 重组表列 = new string[] { "提示内容", "心情日记" }; if (表.TableName == "文摘") 重组表列 = new string[] { "总类", "别类", "子类", "标题", "内容" }; /*玄龙戏珠无级树*/ 树表 = 表.DefaultView.ToTable(true, 重组表列); DataTable 根表 = 树表.DefaultView.ToTable(true, 重组表列[0]); foreach (DataRow 数据列 in 根表.Rows)/*父龙*/ { ArrayList 子节 = new ArrayList(), 节存 = new ArrayList(); DateTime 日期; DataRow[] 子节数据 = null; TreeNode 节点 = new TreeNode(); 节点.Text = 数据列[0].ToString(); 节点.Tag = 数据列; 树.Nodes.Add(节点); 子节.Add(节点); if (!DateTime.TryParse(节点.Text, out 日期)) 子节数据 = 树表.Select(重组表列[0] + "='" + 节点.Text + "'"); foreach (DataRow 元素 in 子节数据)/*母龙=父龙同步*/ { for (int 级 = 1, 列数 = 重组表列.Length; 级 < 列数; 级++)/*子龙*/ { if (子节.Count < 列数) { 节点 = 玄龙戏珠无级树(节点, 元素, 级); 子节.Add(节点); } else { foreach (TreeNode 节数据 in 节存)/*龙珠*/ { if (元素[级].ToString() == ((TreeNode)节数据).Text) 子节[级] = (TreeNode)节数据; } if (元素[级].ToString() != ((TreeNode)子节[级]).Text) { 节点 = 玄龙戏珠无级树((TreeNode)子节[级 - 1], 元素, 级); if (级 < 列数 - 2) 节存.Add(子节[级]); 子节[级] = 节点; } } } } } } private TreeNode 玄龙戏珠无级树(TreeNode 节点, DataRow 元素, int 级) { TreeNode 加子节 = new TreeNode(); 加子节.Tag = 元素; 加子节.Text = 元素[级].ToString(); 节点.Nodes.Add(加子节); return 加子节; } 欢迎测试指正,不吝赐教,不拒砸蛋丢菜。