如何实现点击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