封裝成一個函數(shù),方便直接調(diào)用
- //綁定TrreView
- private void InitModuleTree(DataTable dt)
- {
- //清空treeview上所有節(jié)點(diǎn)
- this.tree_Role.Nodes.Clear();
- int[] gen = new int[dt.Rows.Count]; //用于存儲父節(jié)點(diǎn)Tag
- int[] zi = new int[dt.Rows.Count]; //用于存儲子節(jié)點(diǎn)Tag
- for (int i = 0; i < gen.Length; i++)
- {
- string zhi=dt.Rows[i][3].ToString();//獲取節(jié)點(diǎn)Tag值 eg:1-2
- if (zhi.Length>1) //表示是子節(jié)點(diǎn) eg:1-2
- {
- gen[i] = int.Parse(zhi.Substring(0, zhi.IndexOf('-')));
- zi[i] = int.Parse(zhi.Substring(zhi.IndexOf('-') + 1));
- }
- else //表示是根節(jié)點(diǎn) eg:2
- {
- //將所有父節(jié)點(diǎn)加到treeview上
- zi[i] =int.Parse(zhi);
- TreeNode nodeParent = new TreeNode();
- nodeParent.Tag = (zi[i]).ToString();
- nodeParent.Text = dt.Rows[i][1].ToString();
- tree_Role.Nodes.Add(nodeParent);
- }
- }
- bindChildNote(dt,gen,zi);
- }
- //綁定子節(jié)點(diǎn)
- private void bindChildNote(DataTable dt, int[] gen, int[] zi)
- {
- for (int i = 0; i < gen.Length; i++)
- {
- if (gen[i] != 0 && zi[i] != 0) //便利所有節(jié)點(diǎn),找到所有子節(jié)點(diǎn)
- {
- TreeNode childNode = new TreeNode();
- foreach (TreeNode item in tree_Role.Nodes) //便歷treeview上所有父節(jié)點(diǎn)
- {
- if (item.Tag.ToString() == gen[i].ToString()) //找到當(dāng)前子節(jié)點(diǎn)的父節(jié)點(diǎn)
- {
- childNode.Tag = zi[i].ToString();
- childNode.Text = dt.Rows[i][1].ToString();
- item.Nodes.Add(childNode);
- }
- }
- }
- }
- tree_Role.ExpandAll(); //展開整棵樹
- }
數(shù)據(jù)庫結(jié)構(gòu):
最終結(jié)果:
引用代碼:
- namespace TreeeeeeeeeeeView
- {
- public partial class Treeeeeeeeeee : Form
- {
- public Treeeeeeeeeee()
- {
- InitializeComponent();
-
- //從數(shù)據(jù)庫獲取數(shù)據(jù),得到結(jié)果為DataTable
- SystemManager.Dao.RolePower dao = new SystemManager.Dao.RolePower();
- DataSet ds = CommonLib.Dao.CompressUtil.DeCompress(dao.getSystemModule());
- DataTable dt = ds.Tables[0];
- InitModuleTree(dt);
- }
-
- //綁定TrreView
- private void InitModuleTree(DataTable dt)
- {
- //清空treeview上所有節(jié)點(diǎn)
- this.tree_Role.Nodes.Clear();
- int[] gen = new int[dt.Rows.Count]; //用于存儲父節(jié)點(diǎn)Tag
- int[] zi = new int[dt.Rows.Count]; //用于存儲子節(jié)點(diǎn)Tag
- for (int i = 0; i < gen.Length; i++)
- {
- string zhi=dt.Rows[i][3].ToString();//獲取節(jié)點(diǎn)Tag值 eg:1-2
- if (zhi.Length>1) //表示是子節(jié)點(diǎn) eg:1-2
- {
- gen[i] = int.Parse(zhi.Substring(0, zhi.IndexOf('-')));
- zi[i] = int.Parse(zhi.Substring(zhi.IndexOf('-') + 1));
- }
- else //表示是根節(jié)點(diǎn) eg:2
- {
- //將所有父節(jié)點(diǎn)加到treeview上
- zi[i] =int.Parse(zhi);
- TreeNode nodeParent = new TreeNode();
- nodeParent.Tag = (zi[i]).ToString();
- nodeParent.Text = dt.Rows[i][1].ToString();
- tree_Role.Nodes.Add(nodeParent);
- }
- }
- bindChildNote(dt,gen,zi);
- }
-
- //綁定子節(jié)點(diǎn)
- private void bindChildNote(DataTable dt, int[] gen, int[] zi)
- {
- for (int i = 0; i < gen.Length; i++)
- {
- if (gen[i] != 0 && zi[i] != 0) //便利所有節(jié)點(diǎn),找到所有子節(jié)點(diǎn)
- {
- TreeNode childNode = new TreeNode();
- foreach (TreeNode item in tree_Role.Nodes) //便歷treeview上所有父節(jié)點(diǎn)
- {
- if (item.Tag.ToString() == gen[i].ToString()) //找到當(dāng)前子節(jié)點(diǎn)的父節(jié)點(diǎn)
- {
- childNode.Tag = zi[i].ToString();
- childNode.Text = dt.Rows[i][1].ToString();
- item.Nodes.Add(childNode);
- }
- }
- }
- }
- tree_Role.ExpandAll(); //展開整棵樹
- }
-
- }
- }
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報。