将子节点添加到treeView

时间:2014-02-06 16:54:27

标签: c# treeview sql-server-ce

我目前正在尝试编写编目程序。目前,我的目标是制作"添加"按钮按我的意愿工作。我的代码:

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());
          }
   }
}

有效。几乎。在求助时,我的treeView看起来像这样

enter image description here

然后,按下"添加"按钮,每个子节点都复制自己,除了经常添加(此图片上的E90)

enter image description here

我sholud以某种方式修改我的方法,我明白了。但重启程序后,一切都恢复正常

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);
    }
}

1 个答案:

答案 0 :(得分:2)

您需要在重新添加节点之前清除树,这就是您真正在做的事情:

treeView1.Nodes.Clear();