using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        List<NodeInfo> nodeInfoList = new List<NodeInfo>();         public Form1()
        {
            InitializeComponent();            
        }         private void Form1_Load(object sender, EventArgs e)
        {
            Init();
            LoadData(new NodeInfo(Guid.Empty, "", Guid.Empty),null);
        }         public void Init()
        {            
            NodeInfo info1 = new NodeInfo(Guid.NewGuid(),"Node1",Guid.Empty);
            NodeInfo info11 = new NodeInfo(Guid.NewGuid(), "Node11", info1.ID);
            NodeInfo info111 = new NodeInfo(Guid.NewGuid(), "Node111", info11.ID);             NodeInfo info2 = new NodeInfo(Guid.NewGuid(), "Node2", Guid.Empty);
            NodeInfo info21 = new NodeInfo(Guid.NewGuid(), "Node21", info2.ID);
            NodeInfo info22 = new NodeInfo(Guid.NewGuid(), "Node22", info2.ID);             NodeInfo info3 = new NodeInfo(Guid.NewGuid(), "Node3", Guid.Empty);
            NodeInfo info31 = new NodeInfo(Guid.NewGuid(), "Node31", info3.ID);
            NodeInfo info311 = new NodeInfo(Guid.NewGuid(), "Node311", info31.ID);             nodeInfoList.Add(info1);
            nodeInfoList.Add(info11);
            nodeInfoList.Add(info111);
            nodeInfoList.Add(info2);
            nodeInfoList.Add(info21);
            nodeInfoList.Add(info22);
            nodeInfoList.Add(info3);
            nodeInfoList.Add(info31);
            nodeInfoList.Add(info311);
        }         public void LoadData(NodeInfo nodeInfo,TreeNode parentNode)
        {
            List<NodeInfo> list =new List<NodeInfo>();
            
            list = GetChildrenList(nodeInfo);
            if (list == null || list.Count == )
            {
                return;
            }             foreach (NodeInfo info in list)
            {
                if (info.ParentID == nodeInfo.ID)
                {
                    TreeNode node = new TreeNode(info.Name);
                    node.Tag = info;
                    if (info.ParentID == Guid.Empty)
                    {
                        treeView1.Nodes.Add(node);
                    }
                    else
                    {
                        parentNode.Nodes.Add(node);
                    }
                    LoadData(info, node);
                }
            }
        }         private List<NodeInfo> GetChildrenList(NodeInfo nodeInfo)
        {
            List<NodeInfo> list = new List<NodeInfo>();
            list = nodeInfoList.FindAll(o => o.ParentID == nodeInfo.ID);
            return list;
        }
    }     public class NodeInfo
    {
        public Guid ID { get; set; }
        public string Name { get; set; }
        public Guid ParentID { get; set; }         public NodeInfo(Guid id, string name, Guid parentId)
        {
            this.ID = id;
            this.Name = name;
            this.ParentID = parentId;
        }
    }
}

TreeView绑定的更多相关文章

  1. winform treeview 绑定文件夹和文件

    转载:http://www.cnblogs.com/zhbsh/archive/2011/05/26/2057733.html #region treeview 绑定文件夹和文件 /// <su ...

  2. winform treeview绑定数据 DOM操作

    form1 public void treeView() { // datatable 定义变量接收 传归来的值 DataTable Father = new BuMenDA().ConSql(); ...

  3. WPF TreeView绑定字典集合

    <TreeView Name="Tree" HorizontalAlignment="Left" Height="269" Width ...

  4. WPF:TreeView绑定

    namespace PostViewer { using System.Collections.ObjectModel; using System.ComponentModel; /// <su ...

  5. WPF TreeView绑定xaml的写法

    方法一 <Window x:Class="TreeViewDemo.MainWindow" xmlns="http://schemas.microsoft.com/ ...

  6. C# treeview 绑定数据 【转】

    private void bindTreeView1() { string sql = "select * from dm_category"; DataTable dt = db ...

  7. TreeView绑定无限层级关系类

    protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Bind_TV(TreeView1.Nodes); ...

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

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

  9. C# treeview绑定

    protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            ...

随机推荐

  1. iOS 模态框覆盖导航栏

    1.使用window 覆盖 2.试图添加到 如果有一个场景:首页三个tab,要求只覆盖Navigation ,而不影响Tab使用,那么使用window 覆盖就不满足了.      这里我们可以使用如下 ...

  2. [UOJ310][UNR #2]黎明前的巧克力

    uoj description 给你\(n\)个数,求从中选出两个交集为空的非空集合异或和相等的方案数模\(998244353\). sol 其实也就是选出一个集合满足异或和为\(0\),然后把它分成 ...

  3. Sprint第一个冲刺(第十天)

    一.Sprint介绍 更新工程部署文件:实现了云端登录:设计经营情况以及数据分析界面. 实验截图: 任务进度: 二.Sprint周期 看板: 燃尽图:

  4. 异常处理—Exception(二)

    在上一篇中"异常处理--Exception(一)"中,跟大家简单介绍了一下Exception,也使大家充分的了解了Exception管理在一个项目中的重要性,那如何在我们的项目中处 ...

  5. SmartFoxServer资料

    http://blog.sina.com.cn/s/blog_6bc2090c0100pgkx.html http://www.cnblogs.com/winson-w/p/3555106.html ...

  6. Linux中源码安装编译Vim

    Linux中源码安装编译Vim Linux下学习工作少不了编辑器,Vim能使你的工作效率成倍的提高.在Ubuntu上安装vim使用命令直接安装很简单.但有时还是需要自己手动编译安装.例如: vim中的 ...

  7. Markdown语法简单介绍

    Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. 一.标题 # 这是标题一 ## 这是标题二 ### 这是标题三 #### 这是标题 ...

  8. 如何用TortoiseSVN管理本地文档

    1.安装(略) 2.搭建本地SVN版本管理数据库(服务器) (1)在本地磁盘上新建一个目录,例如E:\SVN,用来存储各种需要进行版本管理的文档:接着在该目录下再创建一个新的空目录,例如创建一个E:\ ...

  9. C++中如何在顺序容器中删除符合特定条件的元素

    以前很少做删除操作,vector一直当成数组用,而实际追求效率时又经常舍弃vector选用C风格数组.看<C++ Primer>到顺序容器删除这节时试着实现课后习题结果一动手我就出错了. ...

  10. UE4 代码总结

    1.创建关卡类 1.创建C++类继承LevelScriptActor 2.打开关卡蓝图 Class Settings->Parent Class 选择你之前创建好的C++类 遇到的问题: 1.T ...