有人能帮我吗。我有一个表,当我单击其中的一个单元格以获取行id(这将是第一列)时,我希望它。事实上,这是我试图做的一个项目的一部分,在这个项目中,我需要显示父母的所有孩子。所以我想从父级获得这个id,然后遍历所有子级,验证哪些id与外键相同,然后显示它们。请帮我提一些想法。如果你不能理解我的问题,我可以提供代码
public AirlineReservation()
{
InitializeComponent();
}
private void getData()
{
SqlDataAdapter parentDataAdapter = new SqlDataAdapter("select * from Airline", connection);
parentDataAdapter.Fill(ds, "Airline");
SqlDataAdapter childDataAdapter = new SqlDataAdapter("select * from Plane", connection);
childDataAdapter.Fill(ds, "Plane");
DataColumn parentColumn = ds.Tables["Airline"].Columns["airline_id"];
DataColumn childColumn = ds.Tables["Plane"].Columns["airline_id"];
rel = new DataRelation("PlaneAirline", parentColumn, childColumn);
ds.Relations.Add(rel);
parentBindingSource.DataSource = ds;
parentBindingSource.DataMember = "Airline";
childBindingSource.DataSource = parentBindingSource;
childBindingSource.DataMember = "PlaneAirline";
}
private void AirlineReservation_Load(object sender, EventArgs e)
{
parentDataGridView.DataSource = parentBindingSource;
childDataGridView.DataSource = childBindingSource;
getData();
}
private void dg_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
DataTable airlines = ds.Tables["Airline"];
foreach (DataRow airline in airlines.Rows) {
Console.WriteLine("AirlineID = " + airline["airline_id"]);
Console.WriteLine("AirlineName = " + airline["name"]);
DataRow[] planes = airline.GetChildRows("PlaneAirline");
Console.WriteLine("This airline has following planes:");
foreach (DataRow plane in planes)
{
Console.WriteLine(" PlaneID = " + plane["plane_id"]);
}
}
}
我已经建立了这两个表之间的关系,到目前为止,当我点击一个单元格时,它会显示所有的孩子和他们的父母。但我只想显示所选单元格的子项。
DataGridViewCellEventArgs包含用于获取单击的行和列索引的成员。通过该操作,您可以确定单击的单元格并获取其数据。这样你就可以得到相应的平面。
private void dg_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
Console.WriteLine("Clicked row: " + e.RowIndex);
Console.WriteLine("Clicked column: " + e.ColumnIndex);
Console.WriteLine("Cell value: " + dg.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);
}