无论是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树的更多相关文章

  1. Winform中生成自动控件

    场景: 前几天项目需要模拟数据,但是实际设备还没有接上,就自己用Winform搭建了一个数据模拟器,生成数据给平台.这里又一个需求,就是从数据库中找出设备,然后自动生成控件,勾选就表示开启该设备,能上 ...

  2. winform中的TreeView的数据绑定

    #region 绑定TreeView /// <summary> /// 绑定TreeView(利用TreeNode) /// </summary> /// <param ...

  3. VS 的winform中生成release模式

    我试过,直接在项目的"Properties"中,修改"Build"标签的"Configuration"还不行.因为之前将不常用的工具栏隐藏了 ...

  4. Winform中的Treeview动态绑定数据库

    http://bbs.csdn.net/topics/370139193 SQL code   ? 1 2 3 4 5 6 CREATE TABLE [dbo].[Company] (     [Id ...

  5. WinForm开发中针对TreeView控件改变当前选择节点的字体与颜色

    本文转载:http://www.cnblogs.com/umplatform/archive/2012/08/29/2660240.html 在B/S开发中,对TreeView控件要改变当前选中节点的 ...

  6. WinForm控件TreeView 只部分节点显示 CheckBox

    WinForm控件TreeView 只部分节点显示  CheckBox 用过asp.net的应该知道,要在treeview中实现上述功能可以使用ShowCheckBox 属性指定那些节点显示check ...

  7. C#winform菜单权限分配,与菜单同步的treeView树状菜单权限控制使用心得

    在网上查了很多,发现没有讲述关于--C#winform菜单权限分配,与菜单同步的treeView树状菜单权限控制使用--的资料 自己研究了一个使用方法.下面来看看. 我有两个窗体:LOGINFRM,M ...

  8. MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件

    类似于多层级的角色与权限控制功能,用MVC实现MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件.最近我们的项目中需要用到树型菜单,以前使用WebForm时,树型菜单有微软提供的 ...

  9. Winform中Treeview控件失去焦点,将选择的节点设置为高亮显示 (2012-07-16 13:47:07)转载▼

    Winform中Treeview控件失去焦点,将选择的节点设置为高亮显示 (2012-07-16 13:47:07)转载▼标签: winform treeview drawnode Treeview控 ...

随机推荐

  1. MySQL设置字符集为UTF8(Windows版)

    Windows版MySQL设置字符集全部为utf8的方式 MySQL安装目录下的my.ini文件 [client]节点 default-character-set=utf8    (增加) [mysq ...

  2. IDEA 的 git 使用

    push的时候出现"push rejected": 1)先fetch: 2)然后选择branches--origin/master---rebaseOnto 3)再进行push,刚 ...

  3. oracle 行转列、列转行

    最近做数据处理,经常遇到需要行转列.列转行的场景,记录个非常简单实用的oracle  列转行.行转的列方法 1.行转列,基础数据如下 做行转列处理 处理SQL select user_name,max ...

  4. CSS的重要性

    自己很喜欢查看设计出彩的网页,在CSS Zen Garden选择了一个颜色搭配亮眼.结构错落的网页,照着原页面自己写了一个出来.之前做页面的时候总是会把原页面和自己做的放到PS里一个像素一个像素对比查 ...

  5. C# 类:类型 , 数学:类型

    类(类型):   //.Length:获取字符串的长度,返回int型                        //.Trim去除字符串前后的空格                        / ...

  6. jQuery学习总结

    1:jQuery是什么 jQuery是继prototype之后又一个优秀的Javascript框架.它是轻量级的js库,兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, O ...

  7. MVC+UnitOfWork+Repository+EF 之我见

    UnitOfWork+Repository模式简介: 每次提交数据库都会打开一个连接,造成结果是:多个连接无法共用一个数据库级别的事务,也就无法保证数据的原子性.一致性.解决办法是:在Reposito ...

  8. 给大家推荐PYTHON网站

    有些比较知名的,像 资源汇总的http://bbs.linuxtone.org/forum.php?mod=viewthread&tid=2133 google的https://code.go ...

  9. WINDOW.PARENT.CKEDITOR.TOOLS.CALLFUNCTION 图片上传

    CKEDITOR  编辑器   图片上传 WINDOW.PARENT.CKEDITOR.TOOLS.CALLFUNCTION (CKEditorFuncNum,图片路径,返回信息); CKEditor ...

  10. jstl 标签库的使用

    JSTL 核心标签库 使用   JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.ot ...