您的位置:首页 > 编程语言 > VB

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

2013-08-13 10:35 609 查看
如何实现点击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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: