PersonDataSet dataset = new PersonDataSet();
PersonDataSetTableAdapters.客户表TableAdapter dapter_客户表 = new PersonDataSetTableAdapters.客户表TableAdapter();
dapter_客户表.Fill(dataset.客户表); //填充数据
PersonDataSetTableAdapters.订单表TableAdapter dapter_订单表 = new PersonDataSetTableAdapters.订单表TableAdapter();
dapter_订单表.Fill(dataset.订单表); //填充数据bindingSource1.DataSource = dataset.客户表;
bindingSource2.DataSource = dataset.客户表;    // 设置为bindingSource1,就能同步 
bindingSource2.DataMember = "FK__订单表__客户编号__6E01572D";
dataGridView1.DataSource = bindingSource1;
dataGridView2.DataSource = bindingSource2;
上面的代码,当在dataGridView1(父表)中选择不同的行时,为什么dataGridView2(子表)中的数据不能同步?
但是如果把bindingSource2的数据源设置为bindingSource1,却能实现同步,我把两个绑定源都设置为“dataset.客户表”有什么不对呢?

解决方案 »

  1.   

    两个不同的数据源也是两个不同的对象,你两个 DataGridView 对象绑定的分别是不用的对象,所以不会自动反应出来。
      

  2.   

    那下面的代码为什么能同步?
    // personDataSet.客户表是一个已经填充了数据的强类型表
    dataGridView1.DataSource = personDataSet.客户表;
    textBox2.DataBindings.Add("Text", personDataSet.客户表, "客户编号");
    textBox3.DataBindings.Add("Text", personDataSet.客户表, "姓名");
    textBox4.DataBindings.Add("Text", personDataSet.客户表, "年龄");
    textBox5.DataBindings.Add("Text", personDataSet.客户表, "住址");
      

  3.   

    而下面的代码为什么不能同步?也就是说点击dataGridView1的某一行,TextBox不能显示对应的数据
     PersonDataSet dataset = new PersonDataSet();
     PersonDataSetTableAdapters.客户表TableAdapter dapter_客户表 = new PersonDataSetTableAdapters.客户表TableAdapter();
    dapter_客户表.Fill(dataset.客户表);bindingSource1.DataSource = dataset.客户表;
    bindingSource2.DataSource = bindingSource1; //关联了bindingSource1
    dataGridView1.DataSource = bindingSource1; 
    textBox2.DataBindings.Add("Text", bindingSource2, "客户编号");
    textBox3.DataBindings.Add("Text", bindingSource2, "姓名");
    textBox4.DataBindings.Add("Text", bindingSource2, "年龄");
    textBox5.DataBindings.Add("Text", bindingSource2, "住址");