行的ParentLayNo值等于父节点的LayNo值
层次编号 父节点编号
LayNo ParentLayNo
0001 0
0001001 0001
0001002 0001
////// 生成树,添加顶级节点 /// /// 用户TreeView控件 /// 数据表结果集 public static void createTree(TreeView vTreeView, DataTable vDataTable) { DataView vDataView = vDataTable.DefaultView; //获取默认视图 vDataView.Sort = "ParentLayNo ASC"; //根据父节点字段排序 DataRowView[] arrDRV = vDataView.FindRows(0); //树根节点的父亲节点必须是0 if (arrDRV.Length == 0) //如果没有儿子节点则直接返回 return; TreeNode rootTreeNode = null; foreach (DataRowView vDRV in arrDRV) { rootTreeNode = new TreeNode(vDRV.Row[TableConfig.T_PUB_NAME[0]].ToString());//参数为显示的信息 vTreeView.Nodes.Add(rootTreeNode); string layNo = vDRV.Row["layNo"].ToString(); //层次代码 rootTreeNode.Value = layNo;//和winform的区别 CreateTreeNode(vDataView, rootTreeNode); } } /// /// 利用递归生成树 /// /// 获取默认视图 /// TreeView控件节点引用 private static void CreateTreeNode(DataView vDataView, TreeNode parentNode) { DataRowView[] arrDRV = vDataView.FindRows(parentNode.Value//找出同一父节点的所有子节点 if (arrDRV.Length == 0) //如果没有儿子节点则直接返回 return; TreeNode tmpTreeNode = null; foreach (DataRowView vDRV in arrDRV) { tmpTreeNode = new TreeNode(vDRV.Row[TableConfig.T_PUB_NAME[0]].ToString());//参数为显示的信息 parentNode.Nodes.Add(tmpTreeNode);//添加节点 string layNo = vDRV.Row["layNo"].ToString(); //层次代码 tmpTreeNode.Value = layNo;//和winform的区别 CreateTreeNode(vDataView, tmpTreeNode); //进入递归 } }