窗体与动态儿童形成树视图

我正在使用C#中的Windows窗体来使用数据库中的数据构建树视图。 有一个商店程序,提供以下信息列表

id – 节点id描述 – 要在树视图上显示的值isEndNode – 如果它是结束节点则为0; 1如果此节点有子节点

如果isEndNode为1,那么我必须使用当前节点的id调用相同的存储过程来接收其下的子节点列表。

我已经构建了一个机制,它将调用存储过程并获取项目列表,但我不知道如何填充树结构。 我想我会将第一个列表显示为父节点,当用户单击+符号展开时,我将调用存储过程并将新项目作为子节点添加到当前节点。 我不知道如何告诉节点它是父节点而不是终端节点。 有没有人建这样的东西? 请帮忙

我已经为您创建了一个样本,您可以在其中了解如何在您的样本中完成。

在数据库中创建了一个表Employees

最初,员工的姓名将被放在TreeView上

扩展名称后,可以查看其年龄和电话号码。

public Form1() { InitializeComponent(); initTreeView(); //TreeView without any nodes in it } void initTreeView() { SqlConnection con = new SqlConnection(); con.ConnectionString = _ConnectionString; con.Open(); using (SqlCommand comm = new SqlCommand("Select Name From Employees", con)) using (SqlDataReader read = comm.ExecuteReader()) while (read.Read()) { TreeNode tn = new TreeNode(read["Name"].ToString()); tn.Nodes.Add(new TreeNode()); treeView1.Nodes.Add(tn); } treeView1.BeforeExpand += treeView1_BeforeExpand; } void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e) { TreeNode tNode = e.Node; string empName = tNode.Text; tNode.Nodes.Clear(); SqlConnection con = new SqlConnection(); con.ConnectionString = _ConnectionString; con.Open(); using (SqlCommand comm = new SqlCommand("Select Age, PhoneNumber From Employees Where Name = @empName", con)) { comm.Parameters.AddWithValue("@empName", empName); using (SqlDataReader read = comm.ExecuteReader()) if (read.Read()) { TreeNode nodeAge = new TreeNode(read["Age"].ToString()); TreeNode nodePhone = new TreeNode(read["PhoneNumber"].ToString()); tNode.Nodes.AddRange(new TreeNode[] { nodeAge, nodePhone }); } } }