http://bbs.csdn.net/topics/370139193

SQL code

 

?

1
2
3
4
5
6
CREATE TABLE [dbo].[Company] (
    [Id] [int] IDENTITY (1, 1)  Primary Key NOT NULL ,
    [Levers] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [LevelId] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [Name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL 
)

C# code

 

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
public partial class Form1 : Form
    {
        public string rootId = "-1";
 
        public Form1()
        {
            InitializeComponent();
            AddRootCompany(rootId);
            AddSubCompany();
        }
 
        /// <summary>
        /// 添加总公司
        /// </summary>
        /// <param name="rootId"></param>
        private void AddRootCompany(string rootId)
        {
            DataSet ds = new DataSet();
            using (SqlConnection con = new SqlConnection("Data Source=localhost;uid=sa;pwd=saiyang;Database=CSDN"))
            {
                con.Open();
                string strSQL = "select * from Company where Levers='" + rootId + "'";
                using (SqlDataAdapter adapter = new SqlDataAdapter(strSQL, con))
                {
                    adapter.Fill(ds);
                }
                TreeNode NewNode = new TreeNode();
                NewNode.Text = ds.Tables[0].Rows[0]["Name"].ToString().Trim();
                this.treeView1.Nodes.Add(NewNode);
            }
        }
 
        /// <summary>
        /// 添加子公司
        /// </summary>
        private void AddSubCompany()
        {
            DataSet ds = getMenuByLevel(rootId.ToString());
            for (int j = 0; j < ds.Tables[0].Rows.Count; j++)
            {
                InitTreeCompanyChildNode(treeView1.Nodes[j], ds.Tables[0].Rows[j]["LevelId"].ToString());
            }
 
        }
 
        /// <summary>
        /// 获取层次级别
        /// </summary>
        /// <param name="getparams"></param>
        /// <returns></returns>
        public DataSet getMenuByLevel(string param)
        {
            DataSet ds = new DataSet();
            using (SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=CSDN;User ID=sa;Password=saiyang"))
            {
                con.Open();
                string strSQL = "select * from Company where Levers='" + param + "'";
                using (SqlDataAdapter adapter = new SqlDataAdapter(strSQL, con))
                {
                    adapter.Fill(ds);
                }
            }
            return ds;
        }
 
        /// <summary>
        /// 递归获取子节点
        /// </summary>
        /// <param name="PNode"></param>
        /// <param name="classParentID"></param>
        private void InitTreeCompanyChildNode(TreeNode pNode, string classParentID)
        {
            DataSet ds = getMenuByLevel(classParentID);
            DataView dataView = new DataView();
            dataView = ds.Tables[0].DefaultView;
            foreach (DataRowView drv in dataView)
            {
                string id = drv["LevelId"].ToString();
                string name = drv["Name"].ToString();
                TreeNode NewNode = new TreeNode();
                //将子公司添加到父节点下面
                NewNode.Text = name;
                pNode.Nodes.Add(NewNode);
                InitTreeCompanyChildNode(NewNode, id);
            }
        }
 
    }

Winform中的Treeview动态绑定数据库的更多相关文章

  1. winform中生成TreeView树

    无论是webform还是winform,TreeView都是常用功能.使用递归方法很方便. 下面分享一个小实例. 数据库中3个字段,分别是:ID,itemType_name,itemType_PID ...

  2. winform中的TreeView的数据绑定

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

  3. C# 中的treeview绑定数据库(递归算法)

    近日面试的给我两道题目,一道是IQ测试,第二个就是题目所言 总共两个表 department(id int not null primary key,parentid int,name char(50 ...

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

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

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

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

  6. WinForm中从SQLite数据库获取数据显示到DataGridView

    1.关于Sqlite Sqlite是一款开源的.适合在客户端和嵌入式设备中使用的轻量级数据库,支持标准的SQL. 不像SqlServer或Oracle的引擎是一个独立的进程.通过TCP或命名管道等与程 ...

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

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

  8. DropDownList怎样动态绑定数据库中的某一条数据

    用Ajax动态绑定数据库的数据:点击后台查看代码,编写代码如下 if (!IsPostBack) { using (SnailTechDataContext con = new SnailTechDa ...

  9. winform中DataGridView实现分页功能

    WinForm轻松实现自定义分页 (转载) WinForm轻松实现自定义分页 (转载)   转载至http://xuzhihong1987.blog.163.com/blog/static/26731 ...

随机推荐

  1. 使用Xamarin实现串口通讯

    前几天我写了年度总结,然后有人说让我教一下他Xamarin串口通讯怎么做,其实跟java没有多大区别. 记得我刚开始接到公司这个项目的时候很懵逼,我去看了别的安卓串口工具,都不行我当时是RS232串口 ...

  2. 亚马逊CEO贝索斯致股东信:阐述公司未来计划

    亚马逊CEO 杰夫·贝索斯(Jeff Bezos)今天发布年度股东信, 详细描述了亚马逊的产品.服务和未来计划,当然,信中并没有任何的硬数据,比如说亚马逊Kindle的销量等等.但这封信也包括一些颇令 ...

  3. shell命令之at 执行一次性定时任务的用法

    大家都知道crontab是执行定时任务的命令,那么at又是什么呢? 其实at也是定时任务命令,不同的是crontab是执行循环任务,at执行一次性任务 首先说下时间例子 Minute    at no ...

  4. tcp三次握手 四次挥手 (转)

    转自: http://blog.csdn.net/whuslei/article/details/6667471 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看 ...

  5. sip鉴权认证算法详解及python加密

    1. 认证和加密    认证(Authorization)的作用在于表明自己是谁,即向别人证明自己是谁.而相关的概念是MD5,用于认证安全.注意MD5仅仅是个hash函数而已,并不是用于加密.因为ha ...

  6. UML设计(团队作业6)

    决胜 Poker 一.团队成员 学号 姓名 211606392 郑俊瑜 (队长) 211606327 冉繁盛 211606323 刘世华 211606386 姚皓钰 211606358 陈卓楠 211 ...

  7. QT中文乱码解决方法

    由于我毕设的界面是用Qt做的,之前没怎么接触过Qt,所以实现过程中遇到不少小问题,头一个就是这个. 现如今宝宝将其记录下来,供同样有需要的同学或者自己以后方便查阅. 1.所有文件编码格式须一致 不统一 ...

  8. 软件图书,偏.net方向

    深入理解计算机系统(原书第2版) 作者:Randal E.Bryant:1981年在麻省理工学院获计算机科学博士学位,现任美国卡内基·梅隆大学计算机学院院长 内容: 深入浅出地介绍了处理器.编译器.操 ...

  9. Java中的网络编程-2

    Socket编程:(一般的网络编程) <1> 两个 JAVA 应用程序可通过一个双向的网络通信连接, 实现数据交换, 这个双向链路的一段称为一个 Socket. <2> Soc ...

  10. Java多线程中的wait与notify

    一.wait: 1. wait 是 object 类的方法, sleep 是 thread 类的方法. 2. 当前的正在我这个对象访问的线程 wait. 3. 当前的这个线程, 锁定在当前对象的这个线 ...