点击 VB 中 DataGrid 行 触发事件 弹出窗口 并传递 所点击行参数

如何实现点击VB中DataGrid行,触发事件弹出窗口,并传递所点击行参数:

通过双击事件来实现的:
Private Sub DataGrid1_DblClick()
    Dim frm1 As New frmNew    ''定义一个窗体对象frm1,frmNew是程序中的一个窗体
    Dim ActiveRow As Integer    
    On Error GoTo ErrHandle

    ActiveRow = DataGrid1.Row  '取得当前行号

    If DataGrid1.Row >= 0 Then
        frm1.flgAddNew = False                                '设置打开窗体的模式为浏览(或是修改,反正不是新增)
        frm1.inId = DataGrid1.Columns(0).Value   '将当前行的第1列(记录的ID)传递给窗体
        frm1.Show 1
    End If
    '更新窗体数据(如果在打开窗体中修改了数据,就需要重新刷新DataGrid1的当前行数据)
    Call DataView(ActiveRow)
    Exit Sub 
ErrHandle:
    MsgBox "错误提示:" & Err.Description
End Sub

 

DataView函数的功能就是加载数据到你的DataGrid里面,并将当前行指向你所要的行(在修改或删除记录时)。可以参考以下代码:
Private Sub DataView(Optional ActiveRow As Integer = 0)
    On Error GoTo ErrHandle
    
    Set Rs = New ADODB.Recordset
    Rs.Open "Select * From Test order by Id", ConnDB, adOpenStatic, adLockOptimistic
    Set DataGrid1.DataSource = Rs
    If ActiveRow < Rs.RecordCount And ActiveRow > 0 Then
        DataGrid1.Row = ActiveRow
    End If
    Exit Sub
ErrHandle:
    MsgBox "错误提示:" & Err.Description
End Sub

 

记录明细窗体frmNew中定义了两个变量:
Public flgAddNew As Boolean
Public inId As String
其中flgAddNew是控制窗体到底是以新增记录模式还是查看模式去显示(文本框、按钮等都有变动);

inId则是告诉该窗体如果是要查看记录的话,记录的ID是多少。
所以在查看某条记录时,需要这么写:
frm1.flgAddNew = False
frm1.inId = DataGrid1.Columns(0).Value

你可能感兴趣的:(点击 VB 中 DataGrid 行 触发事件 弹出窗口 并传递 所点击行参数)