2014-02-06 157 views
0

我目前正在嘗試編寫編目程序。目前,我的目標是讓「添加」按鈕按需工作。我的代碼:將子節點添加到樹查看

private void populatingTreeView() 
{ 
    SqlCeCommand query = new SqlCeCommand("SELECT * FROM cars ORDER BY model", con); 
    SqlCeDataReader dr = query.ExecuteReader(); 

    while (dr.Read()) 
    { 
     TreeNode[] brandNode = treeView1.Nodes.Find(dr["brand"].ToString(), false); 
     if (!brandNode.Any()) 
     { 
      brandNode = new TreeNode[] 
      { 
      treeView1.Nodes.Add(dr["brand"].ToString(),dr["brand"].ToString()) 
      }; 
      platformNode[0].Nodes.Add(dr["brand"].ToString(), dr["model"].ToString()); 
     } 
      else 
      { 
      platformNode[0].Nodes.Add(dr["brand"].ToString(), dr["model"].ToString()); 
      } 
    } 
} 

它的工作原理。幾乎。在begginging我的TreeView看起來像這樣

enter image description here

然後,按下後​​, 「添加」 按鈕,每個子節點重複本身,但reciently加入(E90上的這張照片)

enter image description here

我修改了我的方法,我明白了。但在重新啓動該程序後一切正在恢復正常

enter image description here

我的「添加」按鈕方法

private void button1_Click(object sender, EventArgs e) 
{ 
SqlCeCommand com = new SqlCeCommand("INSERT INTO cars(model,brand) VALUES (@model,@brand)", con); 
    com.Parameters.AddWithValue("@model", textBox1.Text); 
    com.Parameters.Add("@brand", comboBox3.Text); 

    try 
    { 
     int affectedRows = com.ExecuteNonQuery(); 

     if (affectedRows == 0) 
     { 
      MessageBox.Show("Please, fill all the fields!"); 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 

回答

2

您需要清除樹重新添加的節點,這是你真的在做什麼:

treeView1.Nodes.Clear();