以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何实现双击表时,将当前行数据加入到窗口的ListView中  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=74563)

--  作者:cherryjing
--  发布时间:2015/9/14 11:13:00
--  [求助]如何实现双击表时,将当前行数据加入到窗口的ListView中

我在全局的表事件DoubleClick中编写代码:

 

\'如果是材料数据表
If e.Table.name.contains("_") Then
    \'如果比较窗口被打开并可见
    If Forms("Form_ParametersCompare").visible Then


        AddMaterialToCompare()
        e.Cancel = True \'禁止进入编辑状态
       
    End If
Else
    e.Cancel = True \'禁止进入编辑状态

end if

 

 函数AddMaterialToCompare()如下:

 

Sub AddMaterialToCompare()
Dim i As Integer
Dim lvw As WinForm.ListView = Forms("Form_ParametersCompare").Controls("lvw_Compare")
Dim dr As DataRow = Maintable.current.DataRow \'从数据表中提取数据

Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行
messagebox.Show(MainTable.Name)
For i = 0 To lvw.Columns.count - 1\'逐列取值
    vr(lvw.Columns(i).name) = dr(lvw.Columns(i).name)
Next
vr.Tag= dr \'将DataRow赋值给ListViewRow的Tag属性,将二者联系起来
End Sub

执行发现,双击时虽然表不能被编辑,但listview也没有加入数据,甚至连messagebox也没有show出东西来,感觉AddMaterialToCompare根本就没有被执行,请教版主是什么问题,该如何解决?


--  作者:cherryjing
--  发布时间:2015/9/14 11:15:00
--  
补充一点,那两个if条件都是满足的
--  作者:大红袍
--  发布时间:2015/9/14 11:29:00
--  

1、全局doubleClick事件是否开启

 

2、加入msgbox看是否进入事件

 

msgbox(e.table.Name)

If e.Table.name.contains("_") Then
    \'如果比较窗口被打开并可见

msgbox(Forms("Form_ParametersCompare").Opened)
    If Forms("Form_ParametersCompare").Opened Then

        AddMaterialToCompare()
        e.Cancel = True \'禁止进入编辑状态
    End If
Else
    e.Cancel = True \'禁止进入编辑状态


End If

 


--  作者:cherryjing
--  发布时间:2015/9/14 11:42:00
--  
谢谢版主,原来要在项目的Initialize中添加代码:

For Each dt As DataTable In DataTables
    dt.GlobalHandler.
DoubleClick = True
Next