数据集的格式如下行的ParentLayNo值等于父节点的LayNo值 层次编号 父节点编号 LayNo ParentLayNo /// /// 生成树添加顶级节点/// 改方法主要用于生成根节点/// 用户TreeView控件/// 数据表结果集 public static void createTree(TreeView vTreeView DataTable vDataTable) { DataView vDataView = vDataTableDefaultView; //获取默认视图 vDataViewSort = ParentLayNo ASC; //根据父节点字段排序 DataRowView[] arrDRV = vDataViewFindRows(); //树根节点的父亲节点必须是 if (arrDRVLength == ) //如果没有儿子节点则直接返回 return; TreeNode rootTreeNode = null; foreach (DataRowView vDRV in arrDRV) { rootTreeNode = new TreeNode(vDRVRow[TableConfigT_PUB_NAME[]]ToString());//参数为显示的信息 vTreeViewNodesAdd(rootTreeNode); String[] arrTag = new String[]; arrTag[] = vDRVRow[rid]ToString(); //流水号 arrTag[] = vDRVRow[LayNo]ToString(); //层次代码 rootTreeNodeTag = arrTag; CreateTreeNode(vDataView rootTreeNode); }} /// /// 利用递归生成树 /// 改方法主要用于生成根节点的子结点及其子节点的子结点 // 获取默认视图 /// TreeView控件节点引用 private static void CreateTreeNode(DataView vDataView TreeNode parentNode) { DataRowView[] arrDRV = vDataViewFindRows(((String[])parentNodeTag)[]); //找出同一父节点的所有子节点 if (arrDRVLength == ) //如果没有儿子节点则直接返回 return; TreeNode tmpTreeNode = null; foreach (DataRowView vDRV in arrDRV) { tmpTreeNode = new TreeNode(vDRVRow[TableConfigT_PUB_NAME[]]ToString());//参数为显示的信息 parentNodeNodesAdd(tmpTreeNode);//添加节点 String[] arrTag = new String[]; arrTag[] = vDRVRow[rid]ToString(); //流水号 唯一值 arrTag[] = vDRVRow[LayNo]ToString(); //层次代码 tmpTreeNodeTag = arrTag; CreateTreeNode(vDataView tmpTreeNode); //进入递归 }} |