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
我在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