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. python scrapy ip代理的设置

    在scrapy项目中建一个与spider同级的python目录并在下面添加一个py文件内容为 # encoding: utf-8import base64proxyServer = 代理服务器地址 # ...

  2. saas 系统租户个性化域名&&租户绑定自己域名的解决方案

       实际的需求就类似github 的自定义page 1. 个性化域名    github 实现原理就是用户个性化域名使用泛域名解析,这个比较简单,大部分域名提供商都可以解决    具体操作不用赘述 ...

  3. Go语言学习笔记 package

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 strings import "strings" strings包实现了用于操作字符的简单函数 ...

  4. WebApi全局异常处理方式

    自定义错误消息 public class ErrorMessage:DelegatingHandler { protected override Task<HttpResponseMessage ...

  5. ASP.NET Ajax 客户端框架未能加载、"Sys"未定义

    在Windows Server 2003 系统上部署asp.net项目出现以下问题: IIS为6.0 导致菜单控件的图片显示不出来: WebSite:程序中的图片显示正常. 但用到ASP.net 2. ...

  6. javascript基础-js函数

    一.创建函数的方式 1)普通方式 function cal( num1, num2 ) { return num1+num2; } 2)使用变量初始化方式 var plus = function(nu ...

  7. appium+python自动化31-android_uiautomator定位

    前言 appium就是封装android的uiautomator这个框架来的,所以uiautomator的一些定位方法也可以用 text 1.通过text文本定位语法 new UiSelector() ...

  8. 常见的sql server 链接问题------持续更新

    问题1:超时时间已到.超时时间已到,但是尚未从池中获取连接.出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小 再查询窗口输入exec sp_who2进行查询链接消耗资源 可能出现的情况是 ...

  9. Debian 7.0.0 安装教程图解

    Debian7.0.0的安装镜像文件有3个DVD,安装基本系统只用到第一个镜像文件,即DVD1,其它镜像文件是附带的软件包,下面是安装方法   一.说明: Debian7.0.0的安装镜像文件有3个D ...

  10. 【洛谷】P1196 银河英雄传说(并查集)

    题目描述 公元五八○一年,地球居民迁至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山压顶 ...