以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]窗口界面组合框如何用代码改变其内容?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=19550)

--  作者:liguichuan
--  发布时间:2012/5/14 10:18:00
--  [求助]窗口界面组合框如何用代码改变其内容?

我想实现下列的功能:(见图)


此主题相关图片如下:设表事件操作过程.gif
按此在新窗口浏览图片

 

需求:

     1、“商品1级分类”的下拉列表在窗口加载时生成;

     2、“商口2级分类”的下拉列表由“商品1级分类”的内容生成;

     3、“商口3级分类”的下拉列表由“商品2级分类”的内容生成;

 

     4、“商品1级分类”改变时,“商口2级分类”、“商口3级分类”内容清空重选;

     5、“商口2级分类”改变时,“商口3级分类”内容清空重选。

 

方法一:不设置任何表事件,在窗口的组合框中TextChanged事件中写入代码。

 

商品1级分类对应的组合框中代码为:

Dim c1 As WinForm.ComboBox = e.Form.Controls("ComboBox1")
Dim c2 As WinForm.ComboBox = e.Form.Controls("ComboBox2")
Dim c3 As WinForm.ComboBox = e.Form.Controls("ComboBox3")

c2.ComboList = DataTables("商品分类表").GetComboListString("商品2级分类","[商品1级分类] = \'" & c1.Value & "\'")

c2.Value = ""
c3.value = ""

 

商品2级分类对应的组合框中代码为:

Dim c1 As WinForm.ComboBox = e.Form.Controls("ComboBox1")
Dim c2 As WinForm.ComboBox = e.Form.Controls("ComboBox2")
Dim c3 As WinForm.ComboBox = e.Form.Controls("ComboBox3")

c3.ComboList = DataTables("商品分类表").GetComboListString("商品3级分类","[商品2级分类] = \'" & c2.Value & "\'")

c3.value = ""

 

运行结果如下图所示,达不到要求的效果:


此主题相关图片如下:未设表事件操作过程.gif
按此在新窗口浏览图片

 

方法二:把方法一中标注为红色的三条语句去掉,并在表事件中的DataColChanged事件设置如下代码:

Dim 列名 As String = e.DataCol.Name
Select Case 列名
Case "商品1级分类"
e.DataRow("商品2级分类") = ""
e.DataRow("商品3级分类") = ""

Case "商品2级分类"
e.DataRow("商品3级分类") = ""

Case "商品3级分类"


End Select

 

可以实现效果。

 

 

各组合框所邦定的字段如下图所示:


此主题相关图片如下:未设置表事件1.jpg
按此在新窗口浏览图片

 

 

问题是:

     

c2.Value = ""
c3.value = ""

 

这样的语句为什么不能改变组合框以及字段中的值?

 

 附件如下:

未设置表事件:
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:下拉选择与清空内容(未设表事件).table

设置了表事件:
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:下拉选择与清空内容(设表事件).table

[此贴子已经被作者于2012-5-14 10:19:27编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/5/14 10:22:00
--  

参考:

http://www.foxtable.com/help/topics/2436.htm

 


--  作者:liguichuan
--  发布时间:2012/5/14 10:32:00
--  

把代码改成:

Dim c1 As WinForm.ComboBox = e.Form.Controls("ComboBox1")
Dim c2 As WinForm.ComboBox = e.Form.Controls("ComboBox2")
Dim c3 As WinForm.ComboBox = e.Form.Controls("ComboBox3")

c2.ComboList = DataTables("商品分类表").GetComboListString("商品2级分类","[商品1级分类] = \'" & c1.Value & "\'")
c2.Value = ""
c2.WriteValue()
c3.value = ""
c3.WriteValue()

 

会报错:

 


图片点击可在新窗口打开查看此主题相关图片如下:报错.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:报错2.jpg
图片点击可在新窗口打开查看

--  作者:狐狸爸爸
--  发布时间:2012/5/14 10:37:00
--  
看2楼。