【问题标题】:Can I dynamically change the label of a Siebel button?我可以动态更改 Siebel 按钮的标签吗?
【发布时间】:2018-06-26 14:42:06
【问题描述】:

在我们的 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 以某种方式调用的业务服务方法,那就太好了。

【问题讨论】:

    标签: siebel


    【解决方案1】:

    有几个可能可用的选项:

    1. 我们做了类似的事情,但我们使用的是带有 Open UI 的更高版本的 Siebel。因此,我们将代码添加到自定义 Presentation Model 和 Physical Renderer JavaScript 文件中,而不是 Browser Script。即使您不希望这样做,但如果您不得不使用浏览器脚本求助于类似的东西,您可能更喜欢这样而不是操纵一个按钮的文本。

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

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

      存在一个名为 Hide Control nApplet 用户属性 [请参阅 Siebel Developer's Reference v7.8 -> Ch 4: User Properties -> Setting Numbered Instances of a User Property 以了解 n 在用户属性中。]

      首先,创建两个单独的控件——一个显示Pause,另一个显示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] 值或所有其他 [Status] 值合并到这些值中。

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

      复制您现有的具有 Resume 的 Applet,并修改副本中的该按钮 Control 以显示 Pause。将新的 Applet 命名为 My Form Applet - Pause Button

      然后在工具中钻入您现有的 Applet,单击 Applet Toggle 子对象,添加一条新记录,并使其如下所示: 如果您希望在 [Status] 更改时立即切换,您需要在 BC 的 [Status] 字段上将 Immediate Post Changes 设置为 TRUE。 (这可能会导致性能问题,因此请注意。)否则 Applet 在保存记录之前不会切换。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-20
      • 2020-08-05
      • 2018-05-13
      • 2018-07-13
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多