2016-02-26 137 views
0

我知道我的標題非常含糊,我不確定如何總結它。將子節點添加到節點列表

我有一個連接到一個MySQL數據庫,它從我想在我的treeView中查看的表中獲取一列,並將每行中的數據添加爲一個節點,我想將子節點添加到我添加的節點中,但是數據將根據每個節點而改變。

 string myConString = "Server=localHost;Database=fakekeeper;Uid=root;Pwd=**********;"; 
     string query = "SELECT OSP FROM OSP;"; 
     MySqlConnection conn = new MySqlConnection(myConString); 
     MySqlDataReader reader; 
     MySqlCommand cmd = new MySqlCommand(query, conn); 
     conn.Open(); 
     reader = cmd.ExecuteReader(); 
     TreeNode tables = new TreeNode(); 

     treeView1.Nodes.Add(tables); 

     while (reader.Read()) 
     { 

      tables.Nodes.Add(reader["OSP"].ToString()); 
     } 
     conn.Close(); 

它的作品在我的數據庫的方式是每一個產品都有一個OSP因爲OSP可以有很多的產品,但產品只能有一個OSP,我想使它所以我的樹視圖時,我雙擊OSP向我展示了與treeView中的OSP相關的所有產品作爲節點我不確定是否可以在我的while循環中添加它們,或者如果我需要創建另一個產品?

回答

0

我是自己弄明白只是通過增加另一個while循環,我設法添加到節點:

 string myConString = "Server=localHost;Database=fakekeeper;Uid=root;Pwd=**********;"; 
     string query = "SELECT OSP FROM OSP;"; 
     MySqlConnection conn = new MySqlConnection(myConString); 
     MySqlDataReader reader; 
     MySqlCommand cmd = new MySqlCommand(query, conn); 
     conn.Open(); 
     reader = cmd.ExecuteReader(); 
     TreeNode tables = new TreeNode(); 

     treeView1.Nodes.Add(tables); 

     while (reader.Read()) 
     { 
      TreeNode alphaNode = new TreeNode(reader["OSP"].ToString()); 
      tables.Nodes.Add(alphaNode); 
      MySqlConnection subNodeConn = new MySqlConnection(myConString); 
      string subNodeQuery = string.Format("SELECT product FROM {0};", reader["OSP"].ToString()); 
      MySqlCommand subNodeCommand = new MySqlCommand(subNodeQuery, subNodeConn); 
      MySqlDataReader subNodeReader; 
      subNodeConn.Open(); 
      subNodeReader = subNodeCommand.ExecuteReader(); 

      while(subNodeReader.Read()) 
      { 
       alphaNode.Nodes.Add(subNodeReader["Product"].ToString()); 
      } 
     } 
     conn.Close(); 

請告訴我,如果有,雖然這樣做的更有效的方法?