我可以动态更改Siebel按钮的标签吗?

时间:2018-01-17 16:32:14

标签: siebel

在我们的Siebel 7.8(高交互性)应用程序中,我们有一个带有 Pause / Resume 自定义按钮的表单小程序,它根据当前记录的状态执行以下操作:

  • 如果状态为"排队"或者"激活",它将其切换为"暂停"。
  • 如果状态为"暂停",则会将其切换回之前的状态。
  • 如果状态是另一个("已完成","错误"等),则该按钮被禁用。

是否可以动态更改标签?因此,它会在第一种情况下读取 Pause ,并在第二种情况下读取 Resume

我能想到这样做的唯一方法就是将Applet_LoadApplet_ChangeRecord事件中的浏览器脚本放在一起,例如:

var button = this.FindActiveXControl("Name Of My Button Control");
var status = this.BusComp().GetFieldValue("Status");
if (status == "paused") {
    button.innerHTML = "Resume";
} else if ((status == "queued") || (status == "active")) {
    button.innerHTML = "Pause";
} else {
    // the button will be disabled via PreCanInvokeMethod, but we hide it too
    button.style.visibility = "hidden";
}

即使这样有效(应该,但我还没有尝试过)...我真的很讨厌Siebel中的浏览器脚本,它们总是带来比解决方案更多的麻烦。此外,单击按钮时我仍然需要更改标签...也可以检查Applet_InvokeMethod浏览器事件。

有没有办法根据当前的记录数据更改按钮的标签,而不编码 1 ?我在网上搜索的所有内容都是this trick to change the applet label based on a calculated field,但按钮没有。

1:没有编码,我的意思是不自己编码标签更改。如果我必须以某种方式编写一个由Siebel调用的业务服务方法,那将完全没问题。

1 个答案:

答案 0 :(得分:0)

可能有一些选择:

  1. 我们做了类似的事情,但是我们使用的是带有Open UI的Siebel更高版本。因此,我们将代码添加到自定义表示模型和Physical Renderer JavaScript文件中,而不是使用浏览器脚本。即使您不希望这样做,但是如果您不得不使用浏览器脚本进行类似操作,那么您可能会更喜欢这种操作而不是操作一个按钮的文本。

    我创建了两个按钮控件:一个显示 Tag ,另一个显示 Untag 。它们都调用相同的方法。我向BC添加了一个标志字段。 (您可能会对基于某些[Status]值的计算字段执行相同的操作。)在JS文件中,我放置了代码来检查该标志字段,然后基于该标志字段值显示一个按钮并隐藏其他。

  2. 直到8.1才开始使用Siebel,所以我不记得在7.8中是否可用。这仅适用于具有CSSSWEFrameListHC类的订单管理小程序(这就是为什么我说“潜在可用”选项的原因):

    存在名为隐藏控件 n Applet用户属性 [请参见Siebel Developer's Reference v7.8 -> Ch 4: User Properties -> Setting Numbered Instances of a User Property,以了解 n < / em>中的用户属性。]

    首先,创建两个单独的控件-一个显示暂停,另一个显示 Resume 用户属性可以这样使用:

    小程序用户属性

    Name Value Hide Control 'Name Of My Pause Button Control', '[Status] = "paused"' Hide Control 1 'Name Of My Resume Button Control', '[Status] = "queued" OR [Status] = "active"'

    如果您想隐藏它而不只是禁用它,则可以将所有其他[Status]值或为这些值。

  3. 使用切换小程序。 [请参阅Configuring Siebel eBusiness Applications v7.7 -> Ch 13: Configuring Screens and Views -> Example of Configuring Applet Toggles。]

    复制具有 Resume 的现有Applet,然后在副本中修改该按钮“控件”以显示暂停。将新的Applet命名为我的表单Applet-暂停按钮

    然后在“工具”中钻取您现有的Applet,单击“ Applet Toggle”子对象,添加一个“新记录”,并进行如下操作: Siebel Tools add Toggle Applet 如果要在[状态]更改时立即切换,则需要在BC的[状态]字段上将即时过帐更改设置为TRUE。 (这可能会导致性能问题,请注意。)否则,Applet直到保存记录后才会切换。

    或者您也可以基于[Status]值在BC上创建一个计算出的标志字段,将其立即发布更改设置为TRUE,然后将Applet Toggle基于该字段。

免责声明:除了我们的#1版本,我没有尝试过任何这些方法。