wylsy 2008-1-4 17:45
CQ级联菜单如何实现,测试了论坛上的方法,有些问题
需求:两个下拉列表,“模块”和“子模块”,都是short_string.
模块中有“模块1”,“模块2”
子模块中有“模块1-1”,“模块1-2”,“模块2—1”,“模块2-2”
当选中“模块1”时,在子模块中只出现“模块1-1”,“模块1-2”两个选项
当选中“模块2”时,在子模块中只出现“模块2-1”,“模块2-2”两个选项
我参考的:
根据IBM技术支持网站上的例子,省市区关联的需求实现了。
代码(VBScript)如下:
省字段,常量列表:省1、省2
市字段,choicelist hook:
clip_image002.jpg (11.74 KB)
区字段,choicelist hook:
clip_image002.jpg (11.74 KB)
省字段,valuechanged hook:
SetFieldValue "市(县)", ""
市字段,valuechanged hook:
SetFieldValue "区", ""
参考网页链接:[url]http://www.ibm.com/developerworks/rational/library/3864.html[/url]
我写的代码:
“模块”值改变时:
Sub ModuleName_ValueChanged(fieldname)
SetFieldValue "ModuleName", ""
End Sub
“子模块”的ChoiceList
Sub ChildModuleName_ChoiceList(fieldname, choices)
select case GetFieldValue("ModuleName").GetValue
case "模块1"
choices.AddItem("模块1_1")
choices.AddItem("模块1_2")
case "模块2"
choices.AddItem("模块2_1")
choices.AddItem("模块2_2")
case else
end select
End Sub
这样做出的问题是,不管我把模块名字选为哪个,子模块的下拉表中都是什么都没有
然后我把模块的默认值改为“模块1”,这样的话进去后子模块的下拉表中有“模块1-1”,“模块1-2”两个选项,但是我把模块改为“模块2”,子模块的下拉表中还是“模块1-1”,“模块1-2”这两个选项。
我想大概是没有一个触发条件,应该是需要模块值改变时触发的,是不是该把代码都写在Sub ModuleName_ValueChanged(fieldname)中,可是我不会。
而且我只会一点VB,完全不会PERL,希望有人能帮下我,尽量用VB,谢谢!!
二黑 2008-1-4 18:07
将字段ChildModuleName的Choic List脚本设置为Recalculate Choice List.
右键选择该字段的Choice List, Hook Properties...
[[i] 本帖最后由 二黑 于 2008-1-4 18:08 编辑 [/i]]
wylsy 2008-1-4 18:53
可以了,谢谢。
妈的,这个问题把我搞了一整天,吐血了