winform中生成TreeView树
无论是webform还是winform,TreeView都是常用功能。使用递归方法很方便。
下面分享一个小实例。
数据库中3个字段,分别是:ID,itemType_name,itemType_PID
- private void itemType_Load(object sender, EventArgs e)
- {
- dataBind();
- }
- private void dataBind()
- {
- //获取数据
- string sql = "select * from itemType order by itemType_paixu";
- DB db = new DB();
- string _msg = "";
- DataTable DT = db.GetDt(sql, out _msg);
- //
- treeView1.Nodes.Clear();
- //添加顶节点
- TreeNode tempNode = new TreeNode();
- tempNode.Text = "商品类别";
- tempNode.Name = "0";
- treeView1.Nodes.Add(tempNode);
- //
- nodeBind(treeView1, DT, "0", tempNode);
- treeView1.ExpandAll();
- //
- }
- public void nodeBind(TreeView _treeView, DataTable _dt, string _filter, TreeNode _pNode)
- {
- //循环构建树
- string sFilter = "itemType_PID=" + _filter;
- TreeNode parentNode = _pNode;
- DataView dv = new DataView(_dt);
- dv.RowFilter = sFilter;
- if (dv.Count > 0)
- {
- foreach (DataRowView drv in dv)
- {
- TreeNode tempNode = new TreeNode();
- tempNode.Text = drv["itemType_name"].ToString();
- tempNode.Name = drv["ID"].ToString();
- if (parentNode != null)
- parentNode.Nodes.Add(tempNode);
- else
- _treeView.Nodes.Add(tempNode);
- nodeBind(_treeView, _dt, drv["ID"].ToString(), tempNode);
- }
- }
- }
上面这个例子是有固定根节点的,下面这个例子是没有根节点的,递归构建更方便。
- private void codeitem_Load(object sender, EventArgs e)
- {
- dataBind();
- }
- private void dataBind()
- {
- //获取数据
- string sql = "select * from codeitem order by codeitem_paixu";
- DB db = new DB();
- string _msg = "";
- DataTable DT = db.GetDt(sql, out _msg);
- //
- treeView1.Nodes.Clear();
- nodeBind(treeView1, DT, "0", null);
- treeView1.ExpandAll();
- //
- }
- public void nodeBind(TreeView _treeView, DataTable _dt, string _filter, TreeNode _pNode)
- {
- //循环构建树
- string sFilter = "codeitem_pcode=’" + _filter + "’";
- TreeNode parentNode = _pNode;
- DataView dv = new DataView(_dt);
- dv.RowFilter = sFilter;
- if (dv.Count > 0)
- {
- foreach (DataRowView drv in dv)
- {
- TreeNode tempNode = new TreeNode();
- tempNode.Text = drv["codeitem_name"].ToString();
- tempNode.Name = drv["ID"].ToString();
- if (parentNode != null)
- parentNode.Nodes.Add(tempNode);
- else
- _treeView.Nodes.Add(tempNode);
- nodeBind(_treeView, _dt, drv["codeitem_code"].ToString(), tempNode);
- }
- }
- }
bubuko.com版权所有,禁止转载。原地址:【winform,TreeView树,树形菜单,bubufx】
winform中生成TreeView树的更多相关文章
- Winform中生成自动控件
场景: 前几天项目需要模拟数据,但是实际设备还没有接上,就自己用Winform搭建了一个数据模拟器,生成数据给平台.这里又一个需求,就是从数据库中找出设备,然后自动生成控件,勾选就表示开启该设备,能上 ...
- winform中的TreeView的数据绑定
#region 绑定TreeView /// <summary> /// 绑定TreeView(利用TreeNode) /// </summary> /// <param ...
- VS 的winform中生成release模式
我试过,直接在项目的"Properties"中,修改"Build"标签的"Configuration"还不行.因为之前将不常用的工具栏隐藏了 ...
- Winform中的Treeview动态绑定数据库
http://bbs.csdn.net/topics/370139193 SQL code ? 1 2 3 4 5 6 CREATE TABLE [dbo].[Company] ( [Id ...
- WinForm开发中针对TreeView控件改变当前选择节点的字体与颜色
本文转载:http://www.cnblogs.com/umplatform/archive/2012/08/29/2660240.html 在B/S开发中,对TreeView控件要改变当前选中节点的 ...
- WinForm控件TreeView 只部分节点显示 CheckBox
WinForm控件TreeView 只部分节点显示 CheckBox 用过asp.net的应该知道,要在treeview中实现上述功能可以使用ShowCheckBox 属性指定那些节点显示check ...
- C#winform菜单权限分配,与菜单同步的treeView树状菜单权限控制使用心得
在网上查了很多,发现没有讲述关于--C#winform菜单权限分配,与菜单同步的treeView树状菜单权限控制使用--的资料 自己研究了一个使用方法.下面来看看. 我有两个窗体:LOGINFRM,M ...
- MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件
类似于多层级的角色与权限控制功能,用MVC实现MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件.最近我们的项目中需要用到树型菜单,以前使用WebForm时,树型菜单有微软提供的 ...
- Winform中Treeview控件失去焦点,将选择的节点设置为高亮显示 (2012-07-16 13:47:07)转载▼
Winform中Treeview控件失去焦点,将选择的节点设置为高亮显示 (2012-07-16 13:47:07)转载▼标签: winform treeview drawnode Treeview控 ...
随机推荐
- 搭建java web开发环境、使用eclipse编写第一个java web程序
开发工具:eclipse-jee-juno-SR2-win32-x86_64(请自行官网下载) 使用服务器:apache-tomcat-7.0.35-windows-x64(请自行官网下载) 打开 e ...
- 使用Github Pages建独立博客
http://beiyuu.com/github-pages/ Github很好的将代码和社区联系在了一起,于是发生了很多有趣的事情,世界也因为他美好了一点点.Github作为现在最流行的代码仓库,已 ...
- windows10和ubuntu16.04双系统下时间不对的问题 ZT
最近装了windows10和ubuntu16.04双系统,仍然出现了喜闻乐见的老问题,装完后,在windows下时区不对,之前的老办法是: sudo gedit /etc/default/rcS ut ...
- BZOJ 1584 DP
显然序列不能超过sqrt(n),因为最差情况是每个都独立答案为n #include <iostream> #include <cstring> #include <cst ...
- 最适合和最不适合新手使用的几款 Linux 发行版
大多数知名的Linux发行版都属于"比较容易使用"这一类.一些观察人士可能会驳斥这个观点,但事实上,说到Linux,大多数并非从事IT或软件开发工作的人会被最容易的使用体验所吸引. ...
- MVC+UnitOfWork+Repository+EF 之我见
UnitOfWork+Repository模式简介: 每次提交数据库都会打开一个连接,造成结果是:多个连接无法共用一个数据库级别的事务,也就无法保证数据的原子性.一致性.解决办法是:在Reposito ...
- 上下文管理、线程池、redis订阅和发布
一:上下文管理: 对于一些对象在使用之后,需要关闭操作的.比如说:socket.mysql数据库连接.文件句柄等. 都可以用上下文来管理. 语法结构: Typical usage: @contextm ...
- Twitter API 申请key
最近听了一下coursera的python课(https://www.coursera.org/learn/python-network-data/home/welcome),讲的挺简单也挺有意思.其 ...
- ubuntu随笔
在命令行里输入 sudo nautilus 之后输入你的用户的密码,会弹出一个目录窗口来,可以复制到这来
- Lae程序员小漫画(二),仅供一乐
Lae软件开发,快乐程序员!