• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#数据库递归构造treeview树形结构

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1、首先数据库: f_id 项目ID号 ,f_front 父ID号 ,f_name名称,f_type类型,f_layer所处层,f_order 同层的顺序号;(f_layer,f_order不要也可,这里我主要是需要同层排序才用到)

2、然后“select f_id,f_front,f_name,f_type from data”取得DataSet数据集dsFrame;treeview 名称设为tvDept

3、写函数 构建treeveiw树形:

public void AddTree(int ParentID, TreeNode pNode)
               {
                   DataView dvTree = new DataView(dtTree); //就是dtTree = dsFrame.Tables[0];
                   string Fstr = "[f_front]          =          " + ParentID;      
                   dvTree.RowFilter = Fstr;
                   foreach (DataRowView Row in dvTree)
                   {
                       TreeNode Node = new TreeNode();
                       if (pNode == null)                  //处理主节点
                       {    
                           Node.Name = Row["f_id"].ToString(); //这里+了2个值分别到Name和Text,可随便
                           Node.Text = Row["f_name"].ToString();
                           if (Row["f_type"].ToString() == "岗位") //这个不要也可以,主要为了不同类型显示不同图标
                           {
                               Node.ImageIndex = 1;
                               Node.SelectedImageIndex=1;
                           }
                           else
                           {
                               Node.ImageIndex = 0;
                               Node.SelectedImageIndex=0;
                           }
                           tvDept.Nodes.Add(Node);    //加入
                           AddTree(Int32.Parse(Row["f_id"].ToString()), Node); //递归
                       }
                       else //处理子节点

                       {      
                           Node.Name = Row["f_id"].ToString();
                           Node.Text = Row["f_name"].ToString();
                           if (Row["f_type"].ToString() == "岗位")
                           {
                               Node.ImageIndex = 1;
                               Node.SelectedImageIndex = 1;
                           }
                           else
                           {
                               Node.ImageIndex = 0;
                               Node.SelectedImageIndex=0;
                           }
                           pNode.Nodes.Add(Node);                    
                           AddTree(Int32.Parse(Row["f_id"].ToString()), Node);
                       }
                   }
               }

4、调用方法

AddTree(0, (TreeNode)null);    //0就是处于最高级其f_front=0,数据库里1为顶层那就是1,这个随便

最好+一句           tvDept.ExpandAll(); 展开所有项。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#如何快速高效地导出大量数据?发布时间:2022-07-13
下一篇:
C#/VB.NET在Word转PDF时生成目录书签发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap