zoukankan      html  css  js  c++  java
  • winfrom控件Treeview绑定数据库中的资料(节点控件)

    转载:https://blog.csdn.net/tingzhiyi/article/details/77196188

    封装成一个函数,直接调用

     1 //绑定TrreView
     2         private void InitModuleTree(DataTable dt)
     3         {
     4             //清空treeview上所有节点
     5             this.tree_Role.Nodes.Clear();  
     6             int[] gen = new int[dt.Rows.Count]; //用于存储父节点Tag
     7             int[] zi = new int[dt.Rows.Count];  //用于存储子节点Tag
     8             for (int i = 0; i < gen.Length; i++)
     9             {
    10                 string zhi=dt.Rows[i][3].ToString();//获取节点Tag值   eg:1-2
    11                 if (zhi.Length>1)   //表示是子节点   eg:1-2
    12                 {
    13                     gen[i] = int.Parse(zhi.Substring(0, zhi.IndexOf('-')));
    14                     zi[i] = int.Parse(zhi.Substring(zhi.IndexOf('-') + 1));
    15                 }
    16                 else    //表示是根节点   eg:2
    17                 {
    18                     //将所有父节点加到treeview上
    19                     zi[i] =int.Parse(zhi);
    20                     TreeNode nodeParent = new TreeNode();
    21                     nodeParent.Tag = (zi[i]).ToString();
    22                     nodeParent.Text = dt.Rows[i][1].ToString();
    23                     tree_Role.Nodes.Add(nodeParent);
    24                 }
    25             }
    26             bindChildNote(dt,gen,zi);
    27         }
     1 //绑定子节点
     2         private void bindChildNote(DataTable dt, int[] gen, int[] zi) 
     3         {
     4             for (int i = 0; i < gen.Length; i++)    
     5             {
     6                 if (gen[i] != 0 && zi[i] != 0)        //便利所有节点,找到所有子节点
     7                 {
     8                     TreeNode childNode = new TreeNode();
     9                     foreach (TreeNode item in tree_Role.Nodes)   //便历treeview上所有父节点
    10                     {
    11                         if (item.Tag.ToString() == gen[i].ToString())  //找到当前子节点的父节点
    12                         {
    13                             childNode.Tag = zi[i].ToString();
    14                             childNode.Text = dt.Rows[i][1].ToString();
    15                             item.Nodes.Add(childNode);
    16                         }
    17                     }
    18                 }
    19             }
    20             tree_Role.ExpandAll();      //展开整棵树
    21         }

    效果:

    引用代码:

     1 namespace TreeeeeeeeeeeView
     2 {
     3     public partial class Treeeeeeeeeee : Form
     4     {
     5         public Treeeeeeeeeee()
     6         {
     7             InitializeComponent();
     8  
     9             //从数据库获取数据,得到结果为DataTable
    10             SystemManager.Dao.RolePower dao = new SystemManager.Dao.RolePower();
    11             DataSet ds = CommonLib.Dao.CompressUtil.DeCompress(dao.getSystemModule());
    12             DataTable dt = ds.Tables[0];
    13             InitModuleTree(dt);
    14         }
    15  
    16         //绑定TrreView
    17         private void InitModuleTree(DataTable dt)
    18         {
    19             //清空treeview上所有节点
    20             this.tree_Role.Nodes.Clear();  
    21             int[] gen = new int[dt.Rows.Count]; //用于存储父节点Tag
    22             int[] zi = new int[dt.Rows.Count];  //用于存储子节点Tag
    23             for (int i = 0; i < gen.Length; i++)
    24             {
    25                 string zhi=dt.Rows[i][3].ToString();//获取节点Tag值   eg:1-2
    26                 if (zhi.Length>1)   //表示是子节点   eg:1-2
    27                 {
    28                     gen[i] = int.Parse(zhi.Substring(0, zhi.IndexOf('-')));
    29                     zi[i] = int.Parse(zhi.Substring(zhi.IndexOf('-') + 1));
    30                 }
    31                 else    //表示是根节点   eg:2
    32                 {
    33                     //将所有父节点加到treeview上
    34                     zi[i] =int.Parse(zhi);
    35                     TreeNode nodeParent = new TreeNode();
    36                     nodeParent.Tag = (zi[i]).ToString();
    37                     nodeParent.Text = dt.Rows[i][1].ToString();
    38                     tree_Role.Nodes.Add(nodeParent);
    39                 }
    40             }
    41             bindChildNote(dt,gen,zi);
    42         }
    43  
    44         //绑定子节点
    45         private void bindChildNote(DataTable dt, int[] gen, int[] zi) 
    46         {
    47             for (int i = 0; i < gen.Length; i++)    
    48             {
    49                 if (gen[i] != 0 && zi[i] != 0)        //便利所有节点,找到所有子节点
    50                 {
    51                     TreeNode childNode = new TreeNode();
    52                     foreach (TreeNode item in tree_Role.Nodes)   //便历treeview上所有父节点
    53                     {
    54                         if (item.Tag.ToString() == gen[i].ToString())  //找到当前子节点的父节点
    55                         {
    56                             childNode.Tag = zi[i].ToString();
    57                             childNode.Text = dt.Rows[i][1].ToString();
    58                             item.Nodes.Add(childNode);
    59                         }
    60                     }
    61                 }
    62             }
    63             tree_Role.ExpandAll();      //展开整棵树
    64         }
    65         
    66     }
    67 }
  • 相关阅读:
    Fastboot的使用简单教程
    Spoj 2713 Can you answer these queries IV 水线段树
    互联网金融中的各条路子
    MySql事务无法回滚的原因
    Html 语法学习笔记二
    谈长耗时任务的优化
    收藏:左路Deep Learning+右路Knowledge Graph,谷歌引爆大数据
    [ javascript ] 司徒正美的fadeOut-fadeIn效果!
    顺序队列
    Linux下oracle开机自启动服务
  • 原文地址:https://www.cnblogs.com/leiminghui/p/13966559.html
Copyright © 2011-2022 走看看