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. 《DSP using MATLAB》示例 Example 9.6

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  2. 【DUBBO】dubbo架构详解(转载)

    转载地址:http://shiyanjun.cn/archives/325.html Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解 ...

  3. python pandas 对各种文件的读写 IO tools

    The pandas I/O API is a set of top level reader functions accessed like pd.read_csv() that generally ...

  4. matplotlib ----- 初步

    直接看几段代码即可: # 加载模块的方式 import matplotlib.pyplot as plt import numpy as np # 最简单的单线图 x = np.linspace(0, ...

  5. cockpit 使用(集成docker && k8s 管理)

    1. yum 安装 sudo yum install cockpit 2. 允许启动 sudo systemctl enable --now cockpit.socket 3. 可选的插件 cockp ...

  6. [LeetCode系列]N皇后问题递归解法 -- 位操作方式

    N皇后问题: 给定8*8棋盘, 放置n个皇后, 使其互相不能攻击(即2个皇后不能放在同一行/列/正反对角线上), 求解共有多少种放置方式? 这个问题的解答网上有不少, 但是位操作解法的我看到的不多. ...

  7. oracle之 11g RAC R2 体系结构---Grid

    -- 查看cluster 所维护的资源列表,不包括 OHAS 栈的 daemon [root@node1 bin]# ./crsctl status resource -t-------------- ...

  8. JavaFX 之窗口大小自由拉伸(四)

    一.问题场景 同样的,隐藏掉窗体的默认标题栏也会导致窗体大小自由拉伸功能的失效. 二.解决思路 判断鼠标在窗体的位置,改变鼠标样式,给窗体组件添加拖拽事件监听器,根据鼠标移动位置改变窗体大小. 三.代 ...

  9. Oracle导出导入表空间创建

    //备份数据库前的sqlplus命令创建数据库dmp存入目录 sqlplus /nolog conn /as sysdba SQL> create or replace directory ex ...

  10. java代码----数据类型的转换-----int --->String

    总结:int ----->String package com.a.b; //测试..char--->int // int--->String public class Yue2 { ...