当前位置导航:炫浪网>>网络学院>>网页制作>>ASP.NET教程

winform创建树

欢迎进入.NET社区论坛,与200万技术人员互动交流 >>进入 数据集的格式如下:行的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);                    //进入递归
            }

}
相关内容
赞助商链接