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 }
附:比较好的combobox显示方式: