我做一个销售管理的窗体,涉及到两个主从表:销售记录,销售明细分别用ddatagridview1和datagridview2显示。
我现在已经实现了dw1与dw2的关联,当选中dw1的记录时,dw2的内容会跟着发生变化。主键是:销售编号。
我现在遇到的问题是:我想在dw2中添加销售明细记录,但是想从dw1中提取相关的几个关键字段,直接填入dw2对应的字段中,如:销售代表姓名,销售编码,所属会计区间等。请问如何让dw2在添加新记录时,直接引用dw1当前记录的某些字段。谢谢!

解决方案 »

  1.   


     思路:
       当给DW2添加记录的时候,取得DW1的选中行中特定单元格的値
      
       把取得的DW1的値付给DW2的新记录就可以了啊
      

  2.   

    DataGridViewRow dgvr = this.dataGridView1.SelectedRows[0];
                for (int i = 0; i < dgvr.Cells.Count; i++)
                {
                    Console.Write(dgvr.Cells[i].Value.ToString());
                }//看看打印结果
      

  3.   

    dw1.DataSource = dt1;   //销售记录datatable
    dw2.DataSource = dt2;   //销售明细datatable
    //以下为明细表新增
    DataRow dr = dt2.NewRow();
    dr[0] = 当前dw1选中行的第几列数据/根据当前dw1选中行的ID从dt1取值
    dr[1] = 当前dw1选中行的第几列数据/根据当前dw1选中行的ID从dt1取值
    dt2.Rows.Add(dr);
    dw2.DataSource = dt2; //将新的明细datatable再次绑定到dw2;
      

  4.   

    this.dataGridView1.CurrentRow.Cells[0].Value.ToString()
      

  5.   

    实现方法有很多种,现说一种给你参考,希望对你有所帮助。
    当你双击dw1某行时,直接取当前激活行相应单元格的值,目的把共同的值插入到dw2dw1.Rows[dw2.CurrentRow.Index].Cells["销售代表姓名"].Value.ToString();//dw1表必有此字段
    dw1.Rows[dw2.CurrentRow.Index].Cells["销售编码"].Value.ToString(); //dw1表必有此字段
    dw1.Rows[dw2.CurrentRow.Index].Cells["所属会计区间"].Value.ToString();//dw1表必有此字段因为你想要在dw2添加dw1主记录明细,所以你可以这样做,当你点dw1某记录时弹出一个子窗体,而这个子窗体里有《销售代表姓名》、《销售编码》、《所属会计区间》相应的TextBox 接收前面三个值,当然还有其它TextBox是明细其它字段,这样子窗体上有一个《保存按钮》,在《保存按钮》写插入到dw2语句就可以了。
      

  6.   

    更正一下:是dw1
    dw1.Rows[dw1.CurrentRow.Index].Cells["销售代表姓名"].Value.ToString();//dw1表必有此字段
    dw1.Rows[dw1.CurrentRow.Index].Cells["销售编码"].Value.ToString(); //dw1表必有此字段
    dw1.Rows[dw1.CurrentRow.Index].Cells["所属会计区间"].Value.ToString();//dw1表必有此字段
      

  7.   

    得到dataGridView1的值,直接赋给dataGridView2中对应的Cell
      

  8.   

    其实很简单  在你对griview1添加数据后  数据库就会有数据的变更 这会你就在数据库里头写个触发器  或者 你在后台代码  把gridview1的添加事件  跟gridview2的更新事件放在一个事物里头处理  这样就好了
      

  9.   

    “让dw2在添加新记录时,直接引用dw1当前记录的某些字段”,我觉得你既然已经实现了数据关联,为什么不通过关联直接用sql把dw1的某些字段数据在dw2中显示出来不就可以了,何必还搞什么赋值呢。
      

  10.   

    谢谢各位的帮助,我是这样处理的:方法一:(成功)
    dw2的添加按钮的click事件dw2.CurrentRow.Cells["uid"].Value = dw1.CurrentRow.Cells["uid"].Value.ToString();这样可以实现我要求的效果。
    方法二:( 不成功)
    我想用dw2的DefaultValuesNeeded
    e.Row.Cells["uid"].Value = dw1.CurrentRow.Cells["uid"].Value.ToString();请问这是为什么?错在哪里?