在 DataGridView 中显示父级的所有子记录
本文关键字:记录 DataGridView 显示 | 更新日期: 2023-09-27 17:56:52
我是 .NET 的新手,我真的不明白它是如何工作的。我有这个项目必须做,我被要求显示所有父记录,当我选择父记录时,应该显示它的所有子记录。到目前为止,我设法使用 DataGridView 显示所有父记录。
private void display_btn_Click(object sender, EventArgs e)
{
dg.DataSource = data_set.Tables[0];
}
以下代码有效,但它显示子项的所有记录。我知道我应该以某种方式将父项的主键与子项的外键进行比较,并仅显示与父项的PK相等的项项,但我不知道该怎么写。
private void dg_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
dg2.DataSource = data_set.Tables[1];
}
用于创建关系的代码
DataColumn parentColumn = data_set.Tables["Airline"].Columns["airline_id"];
DataColumn childColumn = data_set.Tables["Plane"].Columns["airline_id"];
rel_pln_air = new DataRelation("fk_pln_air", parentColumn, childColumn);
data_set.Relations.Add(rel_pln_air);
绑定代码:
parentBindingSource.DataSource = data_set;
parentBindingSource.DataMember = "Airline";
childBindingSource.DataSource = parentBindingSource;
childBindingSource.DataMember = "Plane";
您必须在数据集中定义Tables[1]
和Tables[2]
之间的 mster-details 关系。然后,您必须将子DataGridView
的DataSource
设置为该关系。
演练:使用两个 Windows 窗体创建大纲/详细信息窗体 DataGridView 控件是对您的问题的详细说明。
更新
airline_id
不能与plane_id
相关。我认为您在表格plane
有必须参考的airline_id
。
链接我在评论
中所述的同一列使用 GetChildRows 遍历关系
DataRow.GetChildRows