先看一下資料庫的結構:
表結構如下所示:
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代碼如下:
C/S代碼
1 public void AddTree(string fatherNum, TreeNode pNode)
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結構的代碼:
B/S代碼
1 DataSet ds = new DataSet();
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