【发布时间】:2018-06-26 14:42:06
【问题描述】:
在我们的 Siebel 7.8(高交互性)应用程序中,我们有一个带有 Pause / Resume 自定义按钮的表单小程序,它根据当前记录的状态执行以下操作:
- 如果状态为“排队”或“活动”,则将其切换为“暂停”。
- 如果状态为“暂停”,它会将其切换回之前的状态。
- 如果状态是另一种状态(“完成”、“错误”等),则按钮被禁用。
是否可以动态更改标签?这样它会在第一种情况下读取 Pause,在第二种情况下读取 Resume。
我能想到的唯一方法是在Applet_Load 和Applet_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