日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 用数据库记录填充树

發布時間:2025/4/14 C# 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 用数据库记录填充树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

在項目開發的過程中,樹狀結構用的很多,樹結構不但能夠很好的分類匯總,而且還能明確層次關系,方便操作

這里寫一個簡單的C#填充數的程序,一般要填充樹狀結構就會用遞歸的方法

先看數據庫表結構:

?

?

?

parentID為改name的父節點id

?

C#代碼:

?

?1??private?void?button1_Click(object?sender,?EventArgs?e)
?2?????????{
?3?????????????DataSet?ds?=?GetData();
?4?????????????if?(ds.Tables.Count?<=?0)?return;
?5?????????????NodeAdd(treeView1,?ds.Tables[0],?true);
?6?????????}
?7?
?8?????????private?static?DataSet?GetData()
?9?????????{
10?????????????using?(SqlConnection?con?=?new?SqlConnection("data?source=.;initial?catalog=Test;user?id=sa"))
11?????????????{
12?????????????????con.Open();
13?????????????????SqlCommand?cmd?=?new?SqlCommand("select?*?from?Student",?con);
14?????????????????SqlDataAdapter?adapter?=?new?SqlDataAdapter(cmd);
15?????????????????DataSet?ds?=?new?DataSet();
16?????????????????adapter.Fill(ds);
17?????????????????return?ds;
18?????????????}
19?????????}
20?
21?????????//填充數
22?????????private?static?void?NodeAdd(TreeView?tree,?DataTable?table,?bool?expandall)
23?????????{
24?????????????foreach?(DataRow?row?in?table.Rows)
25?????????????{
26?????????????????string?id?=?row["id"].ToString().Trim();
27?????????????????string?name?=?row["name"].ToString().Trim();
28?????????????????string?parentID?=?row["parentID"].ToString().Trim();
29?
30?????????????????TreeNode?node?=?new?TreeNode(name);
31?????????????????node.Tag?=?id;
32?????????????????//在樹中根據id來查找這個節點,如果沒有找到,則說明這個節點是父節點,如果查找到這個節點,則返回,返回的節點為node節點的父節點
33?????????????????TreeNode?parentNode?=?GetNodeByID(tree,parentID);
34?????????????????if?(parentNode?==?null)
35?????????????????{
36?????????????????????tree.Nodes.Add(node);
37?????????????????}
38?????????????????else??//如果不為空,則說明當前的節點為返回節點(parentNode)的子節點
39?????????????????{
40?????????????????????parentNode.Nodes.Add(node);
41?????????????????}
42?????????????????if?(expandall)
43?????????????????{
44?????????????????????tree.ExpandAll();
45?????????????????}
46?????????????}
47?????????}
48?
49?????????private?static?TreeNode?GetNodeByID(TreeView?tree,?string?id)
50?????????{
51?????????????TreeNode?result?=?null;
52?????????????foreach?(TreeNode?node?in?tree.Nodes)
53?????????????{
54?????????????????if?(node.Tag.ToString()?==?id)
55?????????????????{
56?????????????????????result?=?node;
57?????????????????????break;
58?????????????????}
59?????????????????//判斷當前節點是不是要查找的節點,如果不是,則查看當前節點是否有子節點,然后遞歸判斷
60?????????????????if?(node.Nodes.Count?>?0)
61?????????????????{
62?????????????????????result?=?GetNodeByID(node,?id);
63?????????????????????if?(result?!=?null)
64?????????????????????????break;
65?????????????????}
66?????????????}
67?????????????return?result;
68?????????}
69?
70?????????private?static?TreeNode?GetNodeByID(TreeNode?parentNode,?string?id)
71?????????{
72?????????????TreeNode?result?=?null;
73?????????????foreach?(TreeNode?node?in?parentNode.Nodes)
74?????????????{
75?????????????????if?(node.Tag.ToString()?==?id)
76?????????????????{
77?????????????????????result?=?node;
78?????????????????????break;
79?????????????????}
80?
81?????????????????if?(node.Nodes.Count?>?0)
82?????????????????{
83?????????????????????result?=?GetNodeByID(node,?id);
84?????????????????????if?(result?!=?null)
85?????????????????????????break;
86?????????????????}
87?????????????}
88?????????????return?result;
89?????????}

?

?

最后運行結果:

?

?

?

轉載于:https://www.cnblogs.com/wangshuai/archive/2010/07/21/1782522.html

總結

以上是生活随笔為你收集整理的C# 用数据库记录填充树的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。