在Siebel 7.7版本中,高交互模式下通过Button触发的Popup Applet是支持多选的,参见下图
对于如何支持单选,Siebel没有提供标准的配置,实现起来需要大费周章。
Oracle support网站(http://support.oracle.com) 提供了两个解决方案:
1.将Applet改成standard interactivity 模式,此模式下Popup Applet是只能做单选处理。
2.修改Application应用的配置文件为standard interactivity模式。
通过实验发现,这两种方案都不可行。
1.标准交互模式下的Popup Applet需要修改Applet的Class为CSCHTMLSelectListPopup,目前发现这种Class只能应用在Toolbar中,在Applet的button调用的popup applet应用,服务器端会出现crash错误。
2.Application相关的应用都为高交互模式,不可能为单一需求修改cfg配置文件。
后来,我联想到PickApplet在高交互模式下是具有单选功能的,是否可以借助PickApplet实现Popup Applet的单选功能呢?沿着这条思路,终于达成了目标。
实现步骤如下(用伪代码描述):
1.已Popup Applet所在的BC为基础创建PickList对象,命名为PickList 1
2.在BC中加一个calculated field命名为Field 2,保证calculated value为空,并添加PickList 1,在Field 的PickMap中,增加Field 2= Picklist 1的Id字段
3.在Applet的Button中,设置Field属性为Field 2,并增加PickApplet属性为Popup Applet,而此时你一定在猜想Button InvokeMethod里边该设置什么呢,答应就是保持ShowPopup不变,并还是在control user property中,填写Mode和Popup
测试下,是否你想要的功能已经实现。