TreeView 递归添加子节点

来源:互联网 发布:二维数组与一维数组 编辑:程序博客网 时间:2024/05/16 09:13
此问题来自论坛,实现TreeView递归添加接点的主要思路是,数据表的设计,数据表应该有三个字段:"NodeID","Name",和"ParentID".
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace MyTest
{
    
public partial class Form1 : Form
    
{
        
public DataTable dt = new DataTable();
        
public DataSet ds = new DataSet();

        
public Form1()
        
{
            InitializeComponent();
        }


        
private void Form1_Load(object sender, EventArgs e)
        
{
            
this.IntData();
            
this.InitTree(this.treeView1.Nodes, -1);
        }

        
private void IntData()
        
{
            dt.TableName 
= "Nodes";
            ds.Tables.Add(dt);
            dt.Columns.Add(
"NodeID"typeof(int));
            dt.Columns.Add(
"Name"typeof(string));
            dt.Columns.Add(
"ParentID"typeof(int));

            addData(dt, 
0"公共查询部"-1);
            addData(dt, 
1"分行科技部"-1);
            addData(dt, 
2"福天支行"-1);
            addData(dt, 
3"罗湖支行"-1);
            addData(dt, 
4"人民币日报查询"1);
            addData(dt, 
5"外币日报查询"1);
        }

         
private void addData(DataTable dt, int  NodeID, string Name, int ParentID)
        
{
            System.Data.DataRow drow 
= dt.NewRow();
            drow[
"NodeID"= NodeID;
            drow[
"Name"= Name;
            drow[
"ParentID"= ParentID;
            dt.Rows.Add(drow);
        }


        
private void  InitTree(TreeNodeCollection Nds,int parentid)
        
{
            DataView dv
=new DataView ();
            TreeNode tmpNd;
            
int intId;
            dv.Table 
=ds.Tables ["Nodes"];
            dv.RowFilter 
= "ParentID='" + parentid + "'";
            
foreach (DataRowView drv in dv)
            
{
                tmpNd 
= new TreeNode();
                tmpNd.Tag 
= drv["NodeID"];
                tmpNd.Text 
= drv["Name"].ToString ();
                intId 
=(int) drv["ParentID"];
                Nds.Add(tmpNd);
                InitTree(tmpNd.Nodes,(
int)( tmpNd.Tag));
            }

        }

        
    }

}

 

效果如图:

原创粉丝点击