用c#实现 动态加载树型结构,添加,修改,删除节点

解决方案 »

  1.   

    http://topic.csdn.net/u/20100727/20/6998f485-d40b-4ee3-99ea-e55a943ac43f.html
      

  2.   

     private void treeView1_Data()
            {
                string str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Windows.Forms.Application.StartupPath + "/DB/Ventilator.mdb";
                OleDbConnection cn = new OleDbConnection(str);
                cn.Open();
                OleDbCommand cmd = cn.CreateCommand();
                cmd.CommandText = "Select  distinct  Check_day from TestTotalinfo ";
                OleDbDataReader rd = cmd.ExecuteReader();
                TreeNode node3 = new TreeNode();
                node3.Text = "根据日期排序";
                treeView1.Nodes.Add(node3);
                while (rd.Read())
                {
                    TreeNode node = new TreeNode();
                    node.Text = rd["Check_day"].ToString();
                    node3.Nodes.Add(node);
                    node.ImageIndex = 0;
                    node.SelectedImageIndex = 0;
                    OleDbCommand cmd2 = cn.CreateCommand();
                    cmd2.CommandText = "Select distinct TestName from TestTotalinfo where  Check_day='" + node.Text + "'";
                    OleDbDataReader rd2 = cmd2.ExecuteReader();
                    {
                        while (rd2.Read())
                        {
                            TreeNode node2 = new TreeNode();
                            node2.Text = rd2["TestName"].ToString();
                            node.Nodes.Add(node2);
                            node2.ImageIndex = 2;
                            node2.SelectedImageIndex = 2;
                            int a = int.Parse(ud.getTestTotalinfo(node2.Text).Rows[0].ItemArray[12].ToString().Trim());
                            switch (a)
                            {
                                case 0:
                                    node2.Nodes.Add("", "试验的总体情况与测试方法", 4, 4);
                                    node2.Nodes.Add("", "条件选择", 4, 4);
                                    node2.Nodes.Add("", "数据采集", 4, 4);
                                    node2.Nodes.Add("", "性能测试报告", 4, 4);
                                    break;
                                case 1:
                                    node2.Nodes.Add("", "试验的总体情况与测试方法", 3, 3);
                                    node2.Nodes.Add("", "条件选择", 4, 4);
                                    node2.Nodes.Add("", "数据采集", 4, 4);
                                    node2.Nodes.Add("", "性能测试报告", 4, 4);
                                    break;
                                case 2:
                                    node2.Nodes.Add("", "试验的总体情况与测试方法", 3, 3);
                                    node2.Nodes.Add("", "条件选择", 3, 3);
                                    node2.Nodes.Add("", "数据采集", 4, 4);
                                    node2.Nodes.Add("", "性能测试报告", 4, 4);
                                    break;
                                case 3:
                                    node2.Nodes.Add("", "试验的总体情况与测试方法", 3, 3);
                                    node2.Nodes.Add("", "条件选择", 3, 3);
                                    node2.Nodes.Add("", "数据采集", 3, 3);
                                    node2.Nodes.Add("", "性能测试报告", 4, 4);
                                    break;
                                case 4:
                                    node2.Nodes.Add("", "试验的总体情况与测试方法", 3, 3);
                                    node2.Nodes.Add("", "条件选择", 3, 3);
                                    node2.Nodes.Add("", "数据采集", 3, 3);
                                    node2.Nodes.Add("", "性能测试报告", 3, 3);
                                    break;
                            }                    }
                    }
                }
                treeView1.Nodes[0].Expand();//展开根节点        }
      

  3.   

      private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
            {
                if (e.Node.Parent == null)
                {
                    menuStrip.Items.Clear();
                    menuStrip.Items.Add(new ToolStripMenuItem("添加日期", Image.FromFile(System.Windows.Forms.Application.StartupPath + "/img/80[2].png"), new EventHandler(add_date)));
                }
                else if (e.Node.Parent.Text == "根据日期排序")
                {
                    menuStrip.Items.Clear();
                    menuStrip.Items.Add(new ToolStripMenuItem("删除", Image.FromFile(System.Windows.Forms.Application.StartupPath + "/img/35[2].png"), new EventHandler(delete1_All)));
                    menuStrip.Items.Add(new ToolStripMenuItem("添加记录", Image.FromFile(System.Windows.Forms.Application.StartupPath + "/img/80[2].png"), new EventHandler(add1_Clicked)));
                }
                else if (e.Node.Parent.Text != "根据日期排序" && e.Node.Nodes.Count != 0)
                {
                    menuStrip.Items.Clear();
                    menuStrip.Items.Add(new ToolStripMenuItem("删除任务", Image.FromFile(System.Windows.Forms.Application.StartupPath + "/img/35[2].png"), new EventHandler(delete1_Clicked)));            }
                else if (treeView1.SelectedNode.Nodes.Count == 0 && e.Node.Parent.Text != "根据日期排序")
                {
                    menuStrip.Items.Clear();
                    menuStrip.Items.Add(new ToolStripMenuItem("打开", Image.FromFile(System.Windows.Forms.Application.StartupPath + "/img/80[1].png"), new EventHandler(treeView1_DoubleClick)));
                }        }
      

  4.   

     private void delete1_Clicked(object sender, EventArgs e)
            {
                DialogResult result;
                result = MessageBox.Show("您确定要删除该记录吗", "友情提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (result == DialogResult.OK)
                {                ud.DeleteData1(treeView1.SelectedNode.Text);
                    treeView1.Nodes.Remove(treeView1.SelectedNode);            }
            }