b/s和C/S方法用C#递归方法把数据表加载到treeview控件中
先看一下数据库的结构:
表结构如下所示:
Num Name fatherNum BZ
01 总节点 0 ......
0101 第一个一级节点 01 ......
010101 第一个一级节点的第一个支节点 0101 ......
010102 第一个一级节点的第二个支节点 0101 ......
010103 第一个一级节点的第三个支节点 0101 ......
0102 第二个一级节点 01 ......
010201 第二个一级节点的第一个支节点 0102 ......
0103 第三个一级节点 01 ......
010301 第三个一级节点的第一个支节点 0103 ......
01030101 第三个一级节点的第一个支节点 010301 ......
C/S代码如下:

2 {
3
4 DataView dvTree = new DataView(ds.Tables[0]);
5
6 dvTree.RowFilter = "[father Num] = " + fatherNum;
7 foreach (DataRowView Row in dvTree)
8 {
9 TreeNode Node = new TreeNode();
10 if (pNode == null)
11 { //添加根节点
12 Node.Text = Row["Name"].ToString();
13
14 treeView1.Nodes.Add(Node);
15 AddTree(Row["Num"].ToString(), Node); //再次递归
16 }
17 else
18 { //添加当前节点的子节点
19 Node.Text = Row["Name"].ToString();
20 pNode.Nodes.Add(Node);
21
22 AddTree(Row["Num"].ToString(), Node); //再次递归
23 }
24 }
25 }
26
27 DataSet ds = new DataSet();
28 private void Form2_Load(object sender, EventArgs e)
29 {
30 SqlConnection conn = new SqlConnection("server=.;database=test;uid=sa;pwd=;");
31 SqlDataAdapter da = new SqlDataAdapter("select * from test",conn);
32 da.Fill(ds);
33 TreeNode pNode=null;
34 AddTree("0", pNode);
35 }
下面是B/S结构的代码:

2 protected void Page_Load(object sender, EventArgs e)
3 {
4 if (!IsPostBack)
5 {
6 SqlConnection conn = new SqlConnection("server=.;database=test;uid=sa;pwd=;");
7 SqlDataAdapter da = new SqlDataAdapter("select * from test", conn);
8 da.Fill(ds);
9
10 TreeNode pNode = null;
11 AddTree("0", pNode);
12 }
13
14 }
15 public void AddTree(string fatherNum, TreeNode pNode)
16 {
17 DataRow[] dr = ds.Tables[0].Select("fatherNum=" + fatherNum);
18 if (dr.Length > 0)
19 {
20 foreach (DataRow d in dr)
21 {
22 TreeNode tNode = new TreeNode();
23 tNode.Text = d["Name"].ToString();
24 if (pNode == null)
25 {
26 //添加根节点
27 TreeView1.Nodes.Add(tNode);
28 }
29 else
30 {
31 //添加当前节点的子节点
32 pNode.ChildNodes.Add(tNode);
33 tNode.Collapse();
34 }
35 AddTree(d["Num"].ToString(), tNode); //递归
36 }
37 }
38 }
39
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库