我是.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";
答案 0 :(得分:0)
您必须在数据集中定义Tables[1]
和Tables[2]
之间的mster-details关系。然后,您必须将孩子DataSource
的{{1}}设置为该关系。
Walkthrough: Creating a Master/Detail Form Using Two Windows Forms DataGridView Controls 是你问题的详细解释。
<强>更新强>
DataGridView
无法与airline_id
相关联。我知道你必须在plane_id
表中有airline_id
。
答案 1 :(得分:0)
链接与我在评论中所述相同的列 使用GetChildRows来处理关系