无论是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. 团队开发——冲刺2.e

    冲刺阶段二(第五天) 1.昨天做了什么? 讨论“暂停”功能:编写软件测试计划书(引言.测试内容). 2.今天准备做什么? A.编写软件使用说明书: B.编写软件测试计划书(测试规则.测试环境): C. ...

  2. SqlServer类库(自定义)

    1,引用System.Configuration; 2,新建应用程序配置文件 读取SqlDataReader中的数据用where (read.Read()){//DoSomeThings()}

  3. AJAX请求WebService

    1.WebService代码 [WebMethod] [ScriptMethod(UseHttpGet = false)] public string GetObject() { User user ...

  4. 测试markdown

    总结 写内容:博客重要的是内容,如果要讲形式与技术,应该深入学习html,这不是我的重点. 专注:就是利用MD这个好机会,忘记格式,用最简约的美观,来反衬出思考的清晰,内容的价值性. 今天 既要美国式 ...

  5. 10道javascript笔试题

    1.考察this JavaScript var length = 10; function fn() { console.log(this.length); } var obj = { length: ...

  6. 实现PageProcessor

    4.1 实现PageProcessor 这部分我们直接通过GithubRepoPageProcessor这个例子来介绍PageProcessor的编写方式.我将PageProcessor的定制分为三个 ...

  7. Android HandlerThread 的使用及其Demo (转)

    转自http://www.cnblogs.com/hnrainll/p/3597246.html 介绍 首先我们来看看为什么我们要使用HandlerThread?在我们的应用程序当中为了实现同时完成多 ...

  8. C++的学习资源

    本文总结了几个好的C++网站,以及C++方面的经典书籍.所列书籍或标准可以到这里找找电子版. wikipedia关于C++有关条目,注意看后面“参考文献”和“外部链接”: C++ programmin ...

  9. javascript数组 去重

    数组去重的方法有很多,到底哪种是最理想的,自己不清楚.于是自己测试了下数组去重的效果和性能.测试十万个数据,代码和所耗大概时间如下. 到底采用哪种方法,根据实际情况而定吧. /*方法一: 1,'1' ...

  10. <mate>

    1.<meta http-equiv="X-UA-Compatible" content="IE=edge"> 以最高级别的可用模式显示内容 有些因 ...