网站首页 新闻首页 网页设计图形动画软件编程网站开发办公软件操作系统数据库网络技术认证考试范文资料黑客攻防 书籍教程 进入论坛

winform创建树

http://www.diybl.com/ 2008-6-5  网络 点击:  [ 评论 ]
文章搜索:    【点击打包该文章】

    数据集的格式如下:行的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);                    //进入递归
            }

}
文章整理:DIY部落 http://www.diybl.com (本站)   【点击打包该文章】
如果图片或页面不能正常显示请点击这里 站内搜索:   

文章评论

请您留言