treeview中节点的增删改,这方法比较笨,目前知道有个方法不错的,附截图

 private void frmTreeview_Load(object sender, EventArgs e)
        {
            TreeNode node = new TreeNode();
            node.Name = "0";
            node.Text = "所有模块";
            treeView1.Nodes.Add(node);
            AddTree("", (TreeNode)null); //调用递归函数
        }
主窗体代码
 private void button3_Click(object sender, EventArgs e)
        {
            SqlHelper sqlHelper = new SqlHelper();
            int parentId = Convert.ToInt32(treeView1.SelectedNode.Name);//获取父节点的Id
            string s_title = this.textBox2.Text;
            bool it = sqlHelper.bTitle(s_title,parentId);//验证已有的模块中,父类跟名字是否同时相同
            if (it)
            {
                MessageBox.Show("此模块已存在");
                return;
            }
            int titleId = Convert.ToInt32(treeView1.SelectedNode.Name);
            if (titleId==0)//添加总父类
            {
                bool itModule = sqlHelper.bAddFatherModule(s_title);
                if (itModule)
                {
                    MessageBox.Show("添加成功");
                }
                else
                {
                    MessageBox.Show("添加失败");
                }
            }
            else
            {
                bool itSonModule = sqlHelper.bAddSonModule(treeView1.SelectedNode.Name, s_title);
                if (itSonModule)
                {
                    MessageBox.Show("添加成功");
                }
                else
                {
                    MessageBox.Show("添加失败");
                }
            }
            treeView1.Nodes.Clear();
            TreeNode node = new TreeNode();
            node.Name = "0";
            node.Text = "所有模块";
            treeView1.Nodes.Add(node);
            AddTree("", (TreeNode)null); //显示treeview数据

        }
增加节点
 private void button2_Click(object sender, EventArgs e)
        {
            int id = Convert.ToInt32(treeView1.SelectedNode.Name);
            string s_title = textBox1.Text;
            SqlHelper sqlHelper = new SqlHelper();
            bool it = sqlHelper.bUpdateModule(id,s_title);
            if (it)
            {
                MessageBox.Show("修改成功");
            }
            else
            {
                MessageBox.Show("修改失败");
            }
            treeView1.Nodes.Clear();
            TreeNode node = new TreeNode();
            node.Name = "0";
            node.Text = "所有模块";
            treeView1.Nodes.Add(node);
            AddTree("", (TreeNode)null); //显示treeview数据
        }
修改节点
   private void button1_Click(object sender, EventArgs e)//删除节点,前提是这个节点没有子节点才能被删除
        {
            SqlHelper sqlHelper = new SqlHelper();
            int id = Convert.ToInt32(treeView1.SelectedNode.Name);
            //判断是否有子节点
            bool itSon = sqlHelper.bSonModule(id);
            if (itSon)
            {
                MessageBox.Show("有子节点,不能直接删除父节点,请先删除子节点");
                return;
            }
            bool it = sqlHelper.bDelId(id);
            if (it)
            {
                MessageBox.Show("删除成功");
            }
            else
            {
                MessageBox.Show("删除失败");
            }
            treeView1.Nodes.Clear();
            TreeNode node = new TreeNode();
            node.Name = "0";
            node.Text = "所有模块";
            treeView1.Nodes.Add(node);
            AddTree("", (TreeNode)null); //显示treeview数据
        }
删除节点

 1 //判断数据库是否有重的模块
 2         public bool bTitle(string title, int parentId)
 3         {
 4             string sql = string.Format("SELECT Id FROM MainModule WHERE Title= @Title and ParentId=@ParentId");
 5             DataConn q = new DataConn(conStr);
 6             ArrayList paramlist = new ArrayList();
 7             paramlist.Add(q.CreateParameter("@Title", title, DbType.String, 50));//参数化sql语句
 8             paramlist.Add(q.CreateParameter("@ParentId", parentId, DbType.Int32, 4));//参数化sql语句
 9             IDataParameter[] param = (IDataParameter[])paramlist.ToArray(typeof(IDataParameter));
10             object dt = q.ExecuteScalar(sql, param);//返回第一行第一列
11             int it = Convert.ToInt32(dt);
12             return it > 0;
13         }
14         //添加总父模块
15         public bool bAddFatherModule(string title)//调用实体类mod
16         {
17             string sql = string.Format("INSERT INTO MainModule (ParentId,Title)VALUES (@ParentId,@Title)");
18             DataConn q = new DataConn(conStr);
19             ArrayList paramlist = new ArrayList();
20             paramlist.Add(q.CreateParameter("@Title", title, DbType.String, 50));
21             paramlist.Add(q.CreateParameter("@ParentId", "", DbType.String, 50));
22             IDataParameter[] param = (IDataParameter[])paramlist.ToArray(typeof(IDataParameter));
23             object dt = q.ExecuteIdentity(sql, param);
24             int it = Convert.ToInt32(dt);
25             return it > 0;
26         }
27         //添加子模块
28         public bool bAddSonModule(string parentId,string title)//调用实体类mod
29         {
30             string sql = string.Format("INSERT INTO MainModule (ParentId,Title)VALUES(@ParentId,@Title)");
31             DataConn q = new DataConn(conStr);
32             ArrayList paramlist = new ArrayList();
33             paramlist.Add(q.CreateParameter("@ParentId", parentId, DbType.String, 50));
34             paramlist.Add(q.CreateParameter("@Title", title, DbType.String, 50));
35             IDataParameter[] param = (IDataParameter[])paramlist.ToArray(typeof(IDataParameter));
36             object dt = q.ExecuteIdentity(sql, param);
37             int it = Convert.ToInt32(dt);
38             return it > 0;
39         }
40         //修改模块名字
41         public bool bUpdateModule(int id,string title)
42         {
43             string sql = string.Format(" UPDATE MainModule SET Title=@Title WHERE Id=@Id");
44             DataConn q = new DataConn(conStr);
45             ArrayList paramlist = new ArrayList();
46             paramlist.Add(q.CreateParameter("@Title", title, DbType.String, 50));
47             paramlist.Add(q.CreateParameter("@Id",id, DbType.Int32, 4));
48             IDataParameter[] param = (IDataParameter[])paramlist.ToArray(typeof(IDataParameter));
49             object dt = q.ExecuteNonQuery(sql, param);
50             int it = Convert.ToInt32(dt);
51             return it > 0;
52         }
53         //删除模块
54         public bool bDelModule(int id)
55         {
56             string sql = string.Format("DELETE FROM MainModule WHERE Id=@Id");
57             DataConn q = new DataConn(conStr);
58             ArrayList paramlist = new ArrayList();
59             paramlist.Add(q.CreateParameter("@Id", id, DbType.Int32, 4));
60             IDataParameter[] param = (IDataParameter[])paramlist.ToArray(typeof(IDataParameter));
61             object dt = q.ExecuteNonQuery(sql, param);
62             int it = Convert.ToInt32(dt);
63             return it > 0;
64         }
65         //删除模块中判读是否有子节点
66         //SELECT ParentId FROM MainModule WHERE (Id = 14)
67         public bool bSonModule(int parentId)
68         {
69             string sql = string.Format("SELECT Id FROM MainModule WHERE (ParentId  = @ParentId )");
70             DataConn q = new DataConn(conStr);
71             ArrayList paramlist = new ArrayList();
72             paramlist.Add(q.CreateParameter("@ParentId ", parentId, DbType.Int32, 4));//参数化sql语句
73             IDataParameter[] param = (IDataParameter[])paramlist.ToArray(typeof(IDataParameter));
74             object dt = q.ExecuteScalar(sql, param);//返回第一行第一列
75             int it = Convert.ToInt32(dt);
76             return it > 0;
77         }
SqlHelper数据连接

 附:比较好的combobox显示方式:

 

 

 

posted @ 2013-06-04 17:23  Jimmy_5  阅读(891)  评论(0编辑  收藏  举报