TreeView拖动并存入数据库(可判断拖动)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient; namespace treeview
{
/// <summary>
/// SelectNodes选择的节点,要更新的
/// flag判断是否更新成功
/// employeeName员工表中员工姓名的列号
/// dept部门中部门名称的列号
/// </summary>
public partial class Form1 : Form
{
int employeeName = ;
int dept = ;
int employeeDept = ;
public static string SelectNodes; bool flag = false; public Form1()
{
InitializeComponent(); } private void Form1_Load(object sender, EventArgs e)
{
//Form1加载时数据绑定
dataBindTreeView();
}
//返回一个链接池
public SqlConnection getCon()
{
return new SqlConnection("server=.;database=Personnel_Manage;User ID=sa;pwd=123");
}
//得到一个包含员工表和部门表的数据集DataSet
public DataSet getDs()
{
SqlConnection con = getCon();
SqlCommand cmd = new SqlCommand("select * from employee;select * from Dept", con);
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
DataSet ds = new DataSet();
sda.Fill(ds); return ds; } //绑定TreeView的方法
public void dataBindTreeView()
{
this.treeView1.Nodes.Clear();
DataSet dsAll = getDs();
DataTable Tables1 = dsAll.Tables[];
DataTable Tables2 = dsAll.Tables[]; for (int i = ; i < Tables2.Rows.Count; i++)
{
TreeNode NodeDept = new TreeNode();
NodeDept.Text = Tables2.Rows[i][dept].ToString(); for (int j = ; j < Tables1.Rows.Count; j++)
{
TreeNode NodeEmployee = new TreeNode();
string DeptN = Tables1.Rows[j][employeeDept].ToString().Trim();
if (DeptN == NodeDept.Text.Trim())
{
NodeEmployee.Text = Tables1.Rows[j][employeeName].ToString().Trim();
NodeDept.Nodes.Add("", NodeEmployee.Text, , ); }
}
treeView1.Nodes.Add(NodeDept); } } //把拖放后的变化数据存入数据库
public bool UpDataDataBase(string nodeDept,string nodeEmployee)
{
SqlConnection con = getCon(); SqlCommand cmdu = new SqlCommand("UPDATE employee SET Employeebranch = " + "'" + nodeDept + "'where Employeename = '" + nodeEmployee + "'",con);
con.Open(); int count = cmdu.ExecuteNonQuery(); //成功更新返回true
if (count > )
return true;
else
return false;
} #region
//如果使用者移出视窗外,便会引发DragLeave事件。 //如果滑鼠进入另一个控制项,便会引发该控制项的DragEnter事件。 //如果滑鼠移动,但是待在相同的控制项内,便会引发DragOver事件。 #endregion #region //treeView绑定 //treeView拖动中用于存放“鼠标”上的节点
private TreeNode MyNode; private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
{
//启动拖放操作,设置拖放类型为Move(移动) TreeView theTreeView = (TreeView)sender;
TreeNode MoveNode = (TreeNode)e.Item;
if(MoveNode.Parent == null)
theTreeView.AllowDrop = false;
else
{
theTreeView.AllowDrop = true;
}
//执行拖放方法,参数是要拖放的Node和类型move DoDragDrop(e.Item, DragDropEffects.Move);
} private void treeView1_DragEnter(object sender, DragEventArgs e)
{
// 获取TreeNode节点类型的数据 TreeNode Objdata = (TreeNode)e.Data.GetData(typeof(TreeNode)); if (Objdata != null)
{
e.Effect = DragDropEffects.Move; //改变进入TreeNode的背景色(土黄色)表示你要拖动的节点,
Objdata.BackColor = Color.FromArgb(, , );
//保存此TreeNode,进入下一个时还原背景色
MyNode = Objdata;
}
else e.Effect = DragDropEffects.None; } private void treeView1_DragOver(object sender, DragEventArgs e)
{
//修改鼠标进入TreeNode的背景色,还原上一个TreeNode的背景色
TreeView NowTree = (TreeView)sender;
TreeNode CneterNode = NowTree.GetNodeAt(treeView1.PointToClient(new Point(e.X, e.Y))); if ((CneterNode != null) && (CneterNode != MyNode))
{
//指定颜色,(滑动过节点的背景颜色,)
MyNode.BackColor = Color.White;
//知道滑动过节点的字体颜色
MyNode.ForeColor = Color.Green;
if (CneterNode.Parent == null)
{
//如果是“部门节点”把颜色换成蓝色
CneterNode.BackColor = Color.FromArgb(, , );
CneterNode.ForeColor = Color.White;
}
//一般节点为淡绿色
else
CneterNode.BackColor = Color.FromArgb(, , );
MyNode = CneterNode;
}
} private void treeView1_DragDrop(object sender, DragEventArgs e)
{
TreeNode theNode = (TreeNode)e.Data.GetData(typeof(TreeNode)); SelectNodes = theNode.Text; TreeView theTree = (TreeView)sender;
TreeNode targetNode = theTree.GetNodeAt(treeView1.PointToClient(new Point(e.X, e.Y)));
targetNode.ForeColor = Color.Green; if (targetNode.Parent == null)
{ if (targetNode != null)
{
TreeNode targetParent = targetNode.Parent;
//删除拖放的TreeNode
theNode.Remove();
//添加到目标TreeNode下
targetNode.Nodes.Add(theNode);
targetNode.BackColor = Color.White;
theTree.SelectedNode = targetNode; }
string parentsText = targetNode.Text;
if (UpDataDataBase(parentsText, SelectNodes))
{
flag = true;
MessageBox.Show("添加成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
SelectNodes = ""; } else
{
MessageBox.Show("请重新选择选择员工", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
dataBindTreeView();
} } else
{
MessageBox.Show("请选择部门", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); } if (!flag)
{ dataBindTreeView(); } } }
}
TreeView拖动并存入数据库(可判断拖动)的更多相关文章
- Qt中,当QDockWidget的父窗口是一个不可以拖动的QTabWidget的时候实现拖动的方法
之前在做有关QDockWidget的内容时候遇到了瓶颈,那就是窗口弹出来之后拖动不了,也不可以放大和缩小,若是弹出来之后设置成了window的flags,也不可以拖动,而且也不是需要的效果. 1.弹出 ...
- MVC4.0 上传Excel并存入数据库
这里的这个功能实现在WebForm很好实现,上传阶段简单的一个FileUoLoad控件就搞定了,什么取值,什么上传都是浮云,微软都帮我们封装好了,我们只需要一拖一拽就OK了,但这些在MVC中是不行的! ...
- 基于easyui框架中input 类型的checkbox拼接成字符串存入数据库和读取选中---善良公社项目
项目中我做修改用户个人资料的时候,有一个需求是帮助人员的帮助类型如图下所示: 当初想如果是asp.net控件的话应该很简单实现,如果不是基于easyUI框架那就太简单了,现在是受框架的限制与是前端ht ...
- Python3.x:定时获取页面数据存入数据库
Python3.x:定时获取页面数据存入数据库 #间隔五分钟采集一次数据入库 import pymysql import urllib.request from bs4 import Beautifu ...
- PHP部分--图片上传服务器、图片路径存入数据库,并读取
html页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- SQL删除重复数据(根据多个字段),pandas的nan存入数据库报错
delete from M_FACTOR_DATA_TEST a where (a.factor_id,a.data_date,a.stock_code) in (select factor_id,d ...
- SQL Server 枚举异或运算后值存入数据库,读取符合条件的值
有枚举如下: [Flags] public enum Color { Red = , Green = , Blue = , White = } 定义三个枚举变量,并将值存入数据库: Color col ...
- session 存入数据库 php
session 机制 1.php中session的生成机制 session是保存在服务器的,当我们在代码中调用session_start();时,PHP会同时往SESSION的存放目录(默认为/tm ...
- asp.net将图片转成二进制存入数据库
一.代码如下 int code = int.Parse(this.TextBox1.Text);//图片编码 string value = this.FileUpload1.PostedFile.Fi ...
随机推荐
- 我常用的前端开发工具—cutterman,mark man,sublime text,yeoman,gulp……
虽然才刚刚开始练习切图,不过之前还是接触到不少工具的,决定一一用上,果然用了一天就切完了一个psd,对于一个菜鸟来说,还是很开心的. 我先从学ui网下载了一个psd.切图肯定是要用的ps的啦,这里和大 ...
- 【ABAP系列】SAP ABAP中将字符格式的金额转换为数值的函数
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP中将字符格式的金 ...
- 【ABAP系列】SAP 关于出口(user-exit)MV50AFZ1的一些问题
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 关于出口(user-ex ...
- 安装mysql8.0.17时候报错1251-Client does not support authentication protocol requested by server; consider upgrading MySQL client
当mysql数据库安装时候选择的是加密密码时候,用navicat连接时候报错1521,这时候可以cmd之后登陆mysql执行下列代码就可以了 代码: mysql> alter user root ...
- 20190909 SpringBoot集成Swagger
SpringBoot集成Swagger 1. 引入依赖 // SpringBoot compile('org.springframework.boot:spring-boot-starter-web' ...
- python基础-8迭代器(iter)和生成器(yield)
一 生成器 从Python2.2起,生成器提供了一种简洁的方式帮助返回列表元素的函数来完成简单和有效的代码. 它基于yield指令,允许停止函数并立即返回结果.此函数保存其执行上下文,如果需要,可立即 ...
- ./configure 配置文件时出错checking for g++... no
checking for g++... no checking for c++... no checking for gpp... no checking for aCC... no 缺少C++编译器 ...
- 初学css list-style属性
网上很多css布局中会看到这样的一句:list-style:none: 那么list-style到底什么意思?中文即:列表样式:无: 其实它是一个简写属性,包含了所有列表属性,具体包含list-sty ...
- 电路维修 (广搜变形-双端队列bfs)
# 2632. 「BalticOI 2011 Day1」打开灯泡 Switch the Lamp On [题目描述] 有一种正方形的电路元件,在它的两组相对顶点中,有一组会用导线连接起来,另一组则不会 ...
- MySQL里null与空值的辨析
CREATE TABLE `test` ( `col1` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `co ...