以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于窗口中ComboBox下拉选项的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=86843)

--  作者:hopestarxia
--  发布时间:2016/6/27 16:34:00
--  关于窗口中ComboBox下拉选项的问题
一个窗口中的ComboBox2控件绑定了部门表的部门名称列,下拉选择的时候希望选择了对应的部门名称后,
在窗口中textbox4部件中自动填上对应部门的电话(tel)
代码如下,实现了其中的需求
Dim cm As WinForm.ComboBox = e.Form.Controls("ComboBox2")
Dim dr As DataRow = cm.SelectedItem
If dr IsNot Nothing Then
    e.Form.Controls("textbox4").Value = dr("tel")
End If
产生问题如下,请帮助:
问题:如果ComboBox2处先选择了一个部门,后发现本次输入的数据不需要填部门,于是把部门内容消除掉,则对应的textbox4处还显示上次的电话,不跟着清空。请问此处怎么处理?


--  作者:大红袍
--  发布时间:2016/6/27 16:35:00
--  
Dim cm As WinForm.ComboBox = e.Form.Controls("ComboBox2")
Dim dr As DataRow = cm.SelectedItem
If dr IsNot Nothing Then
    e.Form.Controls("textbox4").Value = dr("dptid")
Else
    e.Form.Controls("textbox4").Value = Nothing
End If

--  作者:hopestarxia
--  发布时间:2016/6/27 16:48:00
--  
谢谢啊,不行啊这样。
--  作者:大红袍
--  发布时间:2016/6/27 18:14:00
--  
Dim cm As WinForm.ComboBox = e.Sender
Dim dr As DataRow = DataTables("表A").find("第一列 = \'" & cm.Text & "\'")
If dr IsNot Nothing Then
    e.Form.Controls("textbox4").Value = dr("dptid")
Else
    e.Form.Controls("textbox4").Value = Nothing
End If

--  作者:hopestarxia
--  发布时间:2016/6/27 20:41:00
--  
谢谢,不知什么原因,还是只能在ComboBox2有选择的时候可以,清除ComboBox2里内容的时候textbox4就不跟着变动了。
--  作者:大红袍
--  发布时间:2016/6/27 20:43:00
--  
 写到TextChanged事件啊
--  作者:hopestarxia
--  发布时间:2016/6/27 21:08:00
--  
谢谢帮助啊,
我一直放到SelectedIndexChanged事件中去了。

--  作者:hopestarxia
--  发布时间:2016/7/1 22:17:00
--  再请教一下此处修改的问题
Dim cm As WinForm.ComboBox = e.Sender
Dim dr As DataRow = DataTables("表A").find("第一列 = \'" & cm.Text & "\'")
If dr IsNot Nothing Then
    e.Form.Controls("textbox4").Value = dr("dptid")
Else
    e.Form.Controls("textbox4").Value = Nothing
End If

在新增的时候使用正常,可以是修改的状态下不管用,将语句放到SelectedIndexChanged中,
在改变选择的时候管用,但当修改时,是将原来所选的值除掉,此时则不管用了。
请教一下原因/。

--  作者:Hyphen
--  发布时间:2016/7/2 8:52:00
--  
2个地方都加上代码,不同的事件触发的方式不一样