2个DataGridView实现关联的问题。

来源:百度知道 编辑:UC知道 时间:2024/06/25 02:56:58
多个DataGridView实现关联的问题。

WinForm中。
我的目的:

比如我想实现2个DataGridView控件的关联,首先有一个数据库db_students,该数据库有2个表,
分别为tb_stuInfo,tb_stuScore.
tb_stuInfo有id,name,sex之类的字段。
tb_stuScore有id,math,english之类的字段。

我希望用dataGridView1 来显示tb_stuInfo这个表的信息,即学生的基本信息(姓名,性别...),dataGridView2来显示当前被选中的学生的成绩(tb_stuSocre)信息。
当我选中某个学生的时候,dataGridView2来显示该学生对应的成绩,两个控件中用两个表中的
id字段进行关联。即tb_stuInfo中id为1的学生的成绩记录在tb_stuScore表id为1的行中。

我的想法:
...
SqlDataAdapter da=new ("Select * From tb_stuInfo",conn);
DataSet ds=new DataSet();
da.Fill(ds,"stuInfo");//填充表stuInfo
da=new ("Select * From tb_stuScore",conn);
da.Fill(ds,"stuScore");//填充表stuScore

//建立表关系
DataRelation myRelation=new DataRelation("myRelation"
,ds.Tables["stuInfo"].Columns"stuInfo_id"],
ds.Tables["stuScore"].Columns["score_id"]);

dataGridView1.DataSource=ds.Tables["stuInfo"].DefaultView;

private DataTable dtScore=ds.Tables["stuScore"];

private void dataGridView1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
{
DataRowView row = e.Row.DataBoundItem as DataRowView;
string id = row["id"].ToString();

dtScore.DefaultView.RowFilter = "id=" + id;
dataGridView2.DataSource=dtScore
}