c# - c# 选择父节点,并在datagridview中显示所有子节点
问题描述
我有一个名为“Mechanic”的表,它具有递归,主 ID 是“ID_Mechanic”,递归是“ID_Chief”。我在Datagridiew
. 在 中TreeView
,我展示了所有的父子机制。我的问题是,如何创建以便当我选择父节点时,它的所有子节点都显示在Datagridiew
?
编写我如何创建节点的代码 -
public void FillTree(TreeNodeCollection tn, int? id)
{
NpgsqlCommand cmdtreeview = new NpgsqlCommand("select * from mechanic where id_chief is null", ncon);
if (id != null)
{
cmdtreeview = new NpgsqlCommand("select * from mechanic where id_chief =@id_mechanic", ncon);
cmdtreeview.Parameters.Add(new NpgsqlParameter("id_mechanic", id));
}
NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmdtreeview);
DataTable dt = new DataTable();
da.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
String newdatarow = dr["name"].ToString() + " " + dr["surname"].ToString();
TreeNode node = new TreeNode(newdatarow);
tn.Add(node);
FillTree(node.Nodes, (int?)dr["id_mechanic"]);
}
}
充满 -
FillTree(treeViewMechanic.Nodes, null);
泰!
PS 数据库是在 PostgreSQL 中创建的。
编辑:编码我的工作,但只显示第一父母的孩子。
DataSet ds = new DataSet();
ds.Tables.Add(mechanicdt);
ds.Relations.Add(new DataRelation("mch", mechanicdt.Columns[0],
mechanicdt.Columns[6], true));
private void AfterSelect(object sender, TreeViewEventArgs e)
{
dataGridViewMechanic.DataSource = mechanicdt;
dataGridViewMechanic.DataMember = "mch";
}
编辑:LINQ
DataTable newTable = mechanicdt.AsEnumerable()
.Where(i => i.Field<String>("ID_Mechanic") == null)
.OrderByDescending(i => i.Field<String>("Surname"))
.CopyToDataTable();
dataGridViewMechanic.DataSource = newTable;
dataGridViewMechanic.DataMember = "mch";
解决方案
推荐阅读
- paypal - 如何将支付系统 PayPal 添加到我的电报机器人?
- github - GitHub id 是不可更改的标识符吗?
- sveltekit - 为什么 vite 在 sveltekit/javascript 中抛出导入错误
- javascript - 如何让两个盒子垂直对齐?HTML,CSS
- android - 如何提取这种类型的数据表单状态|| this.state.users.filter 不是函数
- django - 如何设置 Django 传单地图的边界?
- python - 使用 bs4 和请求的 Web-Scraping Roblox API
- r - 将选择中的数据复制到剪贴板?
- openpose - 关于 Openpose 输出
- java - ANDROID - 如何使用 ImageButton