winform创建树

来源:互联网 发布:c#软件 编辑:程序博客网 时间:2024/05/16 06:24

    数据集的格式如下:行的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[] arrTag = new String[2];                arrTag[0] = vDRV.Row["rid"].ToString();         //流水号                arrTag[1] = vDRV.Row["LayNo"].ToString();       //层次代码                rootTreeNode.Tag = arrTag;                CreateTreeNode(vDataView, rootTreeNode);            }}
 ///  /// 利用递归生成树 ///  改方法主要用于生成根节点的子结点及其子节点的子结点
// 获取默认视图 /// TreeView控件节点引用        private static void CreateTreeNode(DataView vDataView, TreeNode parentNode)        {            DataRowView[] arrDRV = vDataView.FindRows(((String[])parentNode.Tag)[1]);     //找出同一父节点的所有子节点             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[] arrTag = new String[2];                arrTag[0] = vDRV.Row["rid"].ToString();         //流水号  唯一值                arrTag[1] = vDRV.Row["LayNo"].ToString();       //层次代码                tmpTreeNode.Tag = arrTag;                CreateTreeNode(vDataView, tmpTreeNode);                    //进入递归            }}
原创粉丝点击