C# TreeView從數據庫綁定數據的示例
更新時間:2021年03月22日 08:47:32 作者:一朵小馮花
這篇文章主要介紹了C# TreeView從數據庫綁定數據的示例,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
封裝成一個函數,方便直接調用
//綁定TrreView
private void InitModuleTree(DataTable dt)
{
//清空treeview上所有節(jié)點
this.tree_Role.Nodes.Clear();
int[] gen = new int[dt.Rows.Count]; //用于存儲父節(jié)點Tag
int[] zi = new int[dt.Rows.Count]; //用于存儲子節(jié)點Tag
for (int i = 0; i < gen.Length; i++)
{
string zhi=dt.Rows[i][3].ToString();//獲取節(jié)點Tag值 eg:1-2
if (zhi.Length>1) //表示是子節(jié)點 eg:1-2
{
gen[i] = int.Parse(zhi.Substring(0, zhi.IndexOf('-')));
zi[i] = int.Parse(zhi.Substring(zhi.IndexOf('-') + 1));
}
else //表示是根節(jié)點 eg:2
{
//將所有父節(jié)點加到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é)點
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é)點,找到所有子節(jié)點
{
TreeNode childNode = new TreeNode();
foreach (TreeNode item in tree_Role.Nodes) //便歷treeview上所有父節(jié)點
{
if (item.Tag.ToString() == gen[i].ToString()) //找到當前子節(jié)點的父節(jié)點
{
childNode.Tag = zi[i].ToString();
childNode.Text = dt.Rows[i][1].ToString();
item.Nodes.Add(childNode);
}
}
}
}
tree_Role.ExpandAll(); //展開整棵樹
}
數據庫結構:

最終結果:

引用代碼:
namespace TreeeeeeeeeeeView
{
public partial class Treeeeeeeeeee : Form
{
public Treeeeeeeeeee()
{
InitializeComponent();
//從數據庫獲取數據,得到結果為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é)點
this.tree_Role.Nodes.Clear();
int[] gen = new int[dt.Rows.Count]; //用于存儲父節(jié)點Tag
int[] zi = new int[dt.Rows.Count]; //用于存儲子節(jié)點Tag
for (int i = 0; i < gen.Length; i++)
{
string zhi=dt.Rows[i][3].ToString();//獲取節(jié)點Tag值 eg:1-2
if (zhi.Length>1) //表示是子節(jié)點 eg:1-2
{
gen[i] = int.Parse(zhi.Substring(0, zhi.IndexOf('-')));
zi[i] = int.Parse(zhi.Substring(zhi.IndexOf('-') + 1));
}
else //表示是根節(jié)點 eg:2
{
//將所有父節(jié)點加到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é)點
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é)點,找到所有子節(jié)點
{
TreeNode childNode = new TreeNode();
foreach (TreeNode item in tree_Role.Nodes) //便歷treeview上所有父節(jié)點
{
if (item.Tag.ToString() == gen[i].ToString()) //找到當前子節(jié)點的父節(jié)點
{
childNode.Tag = zi[i].ToString();
childNode.Text = dt.Rows[i][1].ToString();
item.Nodes.Add(childNode);
}
}
}
}
tree_Role.ExpandAll(); //展開整棵樹
}
}
}
以上就是C# TreeView從數據庫綁定數據的示例的詳細內容,更多關于C# TreeView從數據庫綁定數據的資料請關注腳本之家其它相關文章!
相關文章
c#?Task.Wait()與awaiat?Task異常處理的區(qū)別說明
這篇文章主要介紹了c#?Task.Wait()與awaiat?Task異常處理的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06
C#三種判斷數據庫中取出的字段值是否為空(NULL) 的方法
最近操作數據庫,需要判斷返回的字段值是否為空,在網上收集了3種方法供大家參考2013-04-04

