C# 树状图
效果图:
结构:
frmMain层
- using hierarchy.BLL;
- using hierarchy.Model;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace hierarchy.UI
- {
- public partial class frmMain : Form
- {
- public frmMain()
- {
- InitializeComponent();
- }
- hierarchysBll bll = new hierarchysBll();
- List<Thelog> list = null;
- private void frmMain_Load(object sender, EventArgs e)
- {
- tvmo();
- }
- #region MyRegion
- public void tvmo() {
- tvMov.Nodes.Clear();
- TreeNode dd = null;
- list = bll.findAll();
- foreach (Thelog item in list)
- {
- dd = new TreeNode();
- if (item.Qfatherid == )
- {
- dd.Tag = item.Qid;
- dd.Text = item.Qname;
- tvMov.Nodes.Add(dd);
- GetNode(dd, item.Qid);
- }
- }
- }
- private void GetNode(TreeNode Qname, int Qid)
- {
- list = bll.findAll();
- TreeNode tn = null;
- if (list.Count > )
- {
- foreach (Thelog drv in list)
- {
- if (Qid == drv.Qfatherid)
- {
- tn = new TreeNode();
- tn.Tag = drv.Qid;
- tn.Text = drv.Qname;
- Qname.Nodes.Add(tn);
- GetNode(tn, drv.Qid);
- }
- }
- }
- }
- #endregion
- private void button1_Click(object sender, EventArgs e)
- {
- TreeNode node = tvMov.SelectedNode;
- int s = (int)node.Tag;
- int i = node.Level;
- frmaddlei add = new frmaddlei(s, i, node);
- add.Show();
- }
- private void button3_Click(object sender, EventArgs e)
- {
- TreeNode node = tvMov.SelectedNode;
- int id = (int)node.Tag;
- bool bl = bll.finddel(id);
- if (bl)
- {
- node.Remove();
- MessageBox.Show("删除成功!!");
- }
- else
- {
- MessageBox.Show("出错啦!!!");
- }
- }
- private void button2_Click(object sender, EventArgs e)
- {
- TreeNode node = tvMov.SelectedNode;
- int s = (int)node.Tag;
- string i = node.Text;
- frmup add = new frmup(s, i, node);
- add.Show();
- }
- private void tvMov_AfterSelect(object sender, TreeViewEventArgs e)
- {
- TreeNode node = tvMov.SelectedNode;
- string i = node.Text;
- MessageBox.Show(i);
- }
- }
- }
删除层
- using hierarchy.BLL;
- using hierarchy.Model;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace hierarchy.UI
- {
- public partial class frmaddlei : Form
- {
- public frmaddlei()
- {
- InitializeComponent();
- }
- int ss = ;
- int ii = ;
- TreeNode aodee = null;
- public frmaddlei(int s, int i, TreeNode aode)
- {
- ss = s;
- ii = i;
- aodee = aode;
- InitializeComponent();
- }
- hierarchysBll bll = new hierarchysBll();
- private void button1_Click(object sender, EventArgs e)
- {
- Thelog Thelog = new Thelog();
- Thelog.Qname = tbxname.Text;
- Thelog.Qfatherid=ii;
- Thelog.Qtier = ss;
- bool bl = bll.findAdd(Thelog);
- if (bl)
- {
- MessageBox.Show("添加成功");
- string guid = Guid.NewGuid().ToString();
- TreeNode t = new TreeNode(this.tbxname.Text);
- t.Tag = guid;
- aodee.Nodes.Add(t);
- this.Close();
- }
- }
- }
- }
Dal层
- using hierarchy.Model;
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Data.SqlClient;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace hierarchy.DAL
- {
- public class hierarchysDAL
- {
- //01.写一个查询所有年级的方法
- public List<Models> findAllGrades()
- {
- List<Models> list = new List<Models>();
- string sql = "select [StudentName] from [Address_IS]";
- DataTable table = SQLHelper.ExecuteDataTable(sql);
- foreach (DataRow item in table.Rows)
- {
- Models Models = new Models();
- Models.StudentName = item["StudentName"].ToString();
- list.Add(Models);
- }
- return list;
- }
- //01.写一个查询所有年级的方法
- public List<Thelog> findAll()
- {
- List<Thelog> list = new List<Thelog>();
- string sql = "SELECT * FROM Thelog";
- DataTable table = SQLHelper.ExecuteDataTable(sql);
- foreach (DataRow item in table.Rows)
- {
- Thelog Thelog = new Thelog();
- Thelog.Qid = Convert.ToInt32(item["qid"]);
- Thelog.Qname = item["qname"].ToString();
- Thelog.Qtier = Convert.ToInt32(item["qtier"]);
- Thelog.Qfatherid = Convert.ToInt32(item["qfatherid"]);
- list.Add(Thelog);
- }
- return list;
- }
- public bool findAdd(Thelog Thelog)
- {
- bool bl = false;
- string sql = @"INSERT INTO Thelog(qname,qfatherid,qtier) VALUES(@name,@fatherid,@tid)";
- SqlParameter[] paras = {
- new SqlParameter("@name", Thelog.Qname),
- new SqlParameter("@fatherid", Thelog.Qtier),
- new SqlParameter("@tid", Thelog.Qfatherid)
- };
- int i = (int)SQLHelper.ExecuteNonQuery(sql,paras);
- if (i > )
- {
- bl = true;
- }
- return bl;
- }
- public bool finddel(int id) {
- bool bl = false;
- string sql = "delete from Thelog where qid=@nid";
- SqlParameter[] paras = {
- new SqlParameter("@nid",id)
- };
- int i = (int)SQLHelper.ExecuteNonQuery(sql, paras);
- if (i > )
- {
- bl = true;
- }
- return bl;
- }
- public bool update(Thelog Thelog)
- {
- bool bl = false;
- string sql = "update Thelog set qname=@name where qid=@id";
- SqlParameter[] paras = {
- new SqlParameter("@name", Thelog.Qname),
- new SqlParameter("@id", Thelog.Qid)
- };
- int i = (int)SQLHelper.ExecuteNonQuery(sql, paras);
- if (i > )
- {
- bl = true;
- }
- return bl;
- }
- }
- }
C# 树状图的更多相关文章
- SqlServer-无限递归树状图结构设计和查询
在现实生活中,公司的部门设计会涉及到很多子部门,然后子部门下面又存在子部门,形成类似判断的树状结构,比如说评论楼中楼的评论树状图,职位管理的树状图结构等等,实现类似的树状图数据结构是在开发中经常出现的 ...
- Android开源图表之树状图和饼状图的官方示例的整理
最近由于工作需要,所以就在github上搜了下关于chart的三方框架 官方地址https://github.com/PhilJay/MPAndroidChart 由于工作需要我这里整理了一份Ecli ...
- D3树状图给指定特性的边特别显示颜色
D3作为前端图形显示的利器,功能之强,对底层技术细节要求相对比较多. 有一点,就是要理解其基本的数据和节点的匹配规则架构,即enter,update和exit原理,我前面的D3基础篇中有介绍过,不明白 ...
- D3树状图异步按需加载数据
D3.js这个绘图工具,功能强大不必多说,完全一个Data Driven Document的绘图工具,用户可以按照自己的数据以及希望实现的图形,随心所欲的绘图. 图形绘制,D3默认采用的是异步加载,但 ...
- [整理] ES5 词法约定文档树状图
将ES5 词法说明整理为了树状图,方便查阅,请自行点开小图看大图:
- bzoj 4871: [Shoi2017]摧毁“树状图” [树形DP]
4871: [Shoi2017]摧毁"树状图" 题意:一颗无向树,选两条边不重复的路径,删去选择的点和路径剩下一些cc,求最多cc数. update 5.1 : 刚刚发现bzoj上 ...
- vue 树状图数据的循环 递归循环
在main.js中注册一个子组件 在父组件中引用 树状图的数据格式 绑定一个数据传入子组件,子组件props接收数据 子组件中循环调用组件,就实现了递归循环
- ztree 文件夹类型的 树状图
未套程序的源代码: 链接:http://pan.baidu.com/s/1nuHbxhf 密码:4aw2 已套程序的源代码: css样式: /*发布邮件 选择领导弹窗*/ .xuandao{ disp ...
- visio画等分树状图
一 树状图形状 Search里搜索Tree,找到Double Tree或者Multi Tree的形状 二 分出更多branch 按住主干上的黄色小方块,拖出更多分支. 三 等分分支 将每个分支和对应的 ...
- ArcGIS教程:树状图
摘要 构造可显示特征文件里连续合并类之间的属性距离的树示意图(树状图). 使用方法 · 输入特征文件必须採用预定的特征文件格式. 特征文件可使用 Iso 聚类或创建特征工具来创建.该文件必须至少包括两 ...
随机推荐
- Python3浮点型(float)运算结果不正确处理办法
一.问题说明 以前对浮点数运行没有没有太在意.昨天同事要求把百分比结果保存到文件上,然后就以保存1位小数的形式给他保存了. 但是今天同事运行时问能不能统一以一位小数的形式保存,当时觉得很奇怪昨天就是以 ...
- 算法:输出一个整数(不用ToString方法)
1.递归实现 static void Main(string[] args) { Console.WriteLine("Pls input a number:"); int p = ...
- Abp 中 模块 加载及类型自动注入 源码学习笔记
注意 互相关联多使用接口注册,所以可以 根据需要替换. 始于 Startup.cs 中的 通过 AddApplication 扩展方法添加 Abp支持 1 services.AddApplicati ...
- Mdate时间插件
在做移动端的页面时,用户报名某个活动,需要填写她的出生日期,这时可以用Mdate插件来完成,已达到更好的用户体验 操作很简单,效果也不错,是滑动选择时间的,也有回调函数方便我们使用.只需要在页面中引入 ...
- closures
一.什么是闭包和闭包的几种写法和用法 1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. ...
- 华为S5700设置vlan,并绑定电脑的IP地址与mac地址。
要求是设置两个vlan,10和20.交换机下的10网段和20网段的电脑在两个vlan当中.20网段的ip地址与mac地址绑定,从而实现下面的电脑更改ip地址或者不明来源的电脑不能连接到交换机. 1.s ...
- C_program assignment 2
/* Name: C program assignment 2 Copyright: Author: ShiroKa_X Date: 22/03/17 14:07 Description: */ #i ...
- Android向通讯录添加联系人的一般方法
Android向通讯录添加联系人的一般方法 以一个简单的例子加以说明,记得需要相应的权限: 测试代码,关键的内容就在add函数里面. package zhangphil.demo; import an ...
- Beta冲刺三
Beta冲刺三 1.团队TSP 团队任务 预估时间 实际时间 完成日期 对数据库的最终完善 120 150 12.2 对学生注册功能的完善——新增触发器 150 140 11.29 对教师注册功能的完 ...
- C++笔记之关键字explicit
在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换. explicit使用注意事项: explicit 关键字只能用 ...