以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]帮助文件自定义界面四中自动填充的疑问  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=24676)

--  作者:sunbrain
--  发布时间:2012/10/20 1:12:00
--  [求助]帮助文件自定义界面四中自动填充的疑问

在学习复杂的窗口制作,有一段不是很懂

请教大家:

 

P1312:

 

5、将窗口的DropDownClosed( [标题编号])事件代码设置为:

If e.Selected Then \'如果选择了值
    Dim tbl As Table = Tables("窗口1_Table1")
    If
tbl.Current IsNot Nothing Then
        e.Form.DropDownBox.Value = tbl.Current("
客户ID")
    End
If
    e.Form.DropDownBox.CloseDropDown()
End
If

这样关闭下拉窗口后,可以自动将选定客户的客户ID输入到下拉列表框中。

 

红色部分:可是我希望的是把相关的内容也填入,怎么办呢?

于是,我想到在所属的表中datachanged中设置:

 

 

If e.DataCol.Name = "客户ID" Then     \'在产品表找出该产品

    Dim dr As DataRow

    dr = DataTables("客户明细表").Find("客户ID = " & "\'" & e.DataRow("客户ID") & "\'" )

    If dr IsNot Nothing \'如果找到, 则设置各列内容

        e.DataRow("客户名称")= dr("客户名称")

       

    End If

End If

 

 

结果,问题这样的:

没有实现索要的内容,结果除了莫名其貌的问题,见图:

 

 

 

输入的数字是哪个,出来的窗口中第一行的编号就变成了那个数字,而且还自动保存了还

 

请大家帮助,谢谢

 

 


此主题相关图片如下:rt3.gif
按此在新窗口浏览图片

--  作者:lin_hailun
--  发布时间:2012/10/20 9:08:00
--  
 关系复杂,关联复杂,说不清,道不明。

 如果各个控件有绑定字段,直接把表的Position定位到那一行,信息就自动更新了。

 如果没有绑定字段,就在dropdownclosed中写代码,更新各个控件的值。

--  作者:狐狸爸爸
--  发布时间:2012/10/20 9:27:00
--  

离开输入框,输入的内容才会写入到表,才会触发DataColChanged事件。

所以你下拉选择后要离开输入框,其他列的内容才会自动输入。

 

你要即时生效,加一行:

 

If e.Selected Then \'如果选择了值
    Dim tbl As Table = Tables("窗口1_Table1")
    If tbl.Current IsNot Nothing Then
        e.Form.DropDownBox.Value = tbl.Current("客户ID")
        e.Form.DropDownBox.WriteValue()
    End If
    e.Form.DropDownBox.CloseDropDown()
End If

 


--  作者:sunbrain
--  发布时间:2012/10/20 9:48:00
--  

感谢楼上二位!

问题已经找到,窗口的事件和表的datachanged事件是重复执行的,有冲突,所以才导致这样的问题。

解决方式:直接去掉datachanged事件,在窗口设置