DataGridView中连接了产量表数据,新增记录自动拷贝上一条记录的字段值有关问题

DataGridView中连接了产量表数据,新增记录自动拷贝上一条记录的字段值问题
我在datagridview3中连接了产量表数据,
......
DataAdapter3.Fill(DataTable3)
DataGridView3.DataSource = DataTable3
......
数据内容大致如下:
生产日期    机号  单号  重量
2014-10-03  12    A1   19.5
2014-10-03  10    A2   20.0
2014-10-04   8     B1   21.3

单击【编辑】按钮进入datagridview3的编辑、新增记录状态,问:
1、我希望在产量表末尾新增的1条空记录【生产日期】项默认自动拷贝其上一条记录的【生产日期】项内容,请问该如何实现呢?
2、这条新增的产量记录获得【生产日期】项内容后,如果我在这条新记录空白的【机号】项输入12,如何做到自动倒序查找上一条12号机生产记录的【单号】A1并自动拷贝到这条新纪录的【单号】项目中呢?

新增1条空白记录后,我想达到这样的效果......
生产日期    机号  单号  重量
2014-10-04  12    A1      

新空1条白记录后,其【生产日期】2014-10-04是自动拷贝上一条记录的,【机号】项12是手工输入的,【单号】项A1是自动拷贝12号机此前最后1次生产记录的【单号】内容

实现以上功能需要在哪个控件的哪个事件中写代码?
可以给出代码的思路吗?
谢谢!
------解决思路----------------------
你点编辑的时候是干什么?新增or修改,或者同步?新增的话单击按钮就可以给dg进行新增行,复制的数据根据你的代码可以随意处理,单元格修改可以用CellEndEdit事件或者验证事件都可以...
------解决思路----------------------
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim dtMydt As New DataTable
        Dim drMydr As DataRow

        dtMydt.Columns.Add("生产日期")
        dtMydt.Columns.Add("机号")
        dtMydt.Columns.Add("单号")
        dtMydt.Columns.Add("重量")

        drMydr = dtMydt.NewRow
        drMydr("生产日期") = "2014-10-02"
        drMydr("机号") = "12"
        drMydr("单号") = "A0"
        drMydr("重量") = "19.5"
        dtMydt.Rows.Add(drMydr)

        drMydr = dtMydt.NewRow
        drMydr("生产日期") = "2014-10-03"
        drMydr("机号") = "12"
        drMydr("单号") = "A1"
        drMydr("重量") = "19.5"
        dtMydt.Rows.Add(drMydr)

        drMydr = dtMydt.NewRow
        drMydr("生产日期") = "2014-10-03"
        drMydr("机号") = "10"
        drMydr("单号") = "A2"
        drMydr("重量") = "20.0"
        dtMydt.Rows.Add(drMydr)

        drMydr = dtMydt.NewRow
        drMydr("生产日期") = "2014-10-04"
        drMydr("机号") = "8"
        drMydr("单号") = "B1"
        drMydr("重量") = "21.3"
        dtMydt.Rows.Add(drMydr)

        grdMain.DataSource = dtMydt

    End Sub

    Private Sub grdMain_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles grdMain.CellBeginEdit

        If grdMain.CurrentRow.IsNewRow Then
            If e.RowIndex > 0 Then
                grdMain.Item("生产日期", e.RowIndex).Value = grdMain.Item("生产日期", e.RowIndex - 1).Value
            End If
        End If

    End Sub

    Private Sub grdMain_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles grdMain.CellValidating

        If e.RowIndex <> grdMain.DataSource.Rows.Count Then Exit Sub

        Select Case grdMain.Columns(e.ColumnIndex).Name
            Case "机号"
                Dim drMydr() As DataRow = CType(grdMain.DataSource, DataTable).
                                Select("机号 = '" & e.FormattedValue & "'", "生产日期 DESC")
                If drMydr.Length > 0 Then
                    grdMain.Item("单号", e.RowIndex).Value = drMydr(0)("单号")
                End If

        End Select

    End Sub