【发布时间】:2016-08-12 06:57:47
【问题描述】:
我有 3 个提示。第一个提示包含值 A 和 B。选择 A 时,应隐藏其余 2 个提示,选择 B 后应显示 2 个提示。所有 3 个提示都是强制性的。谁能帮我实现这个场景?
【问题讨论】:
-
到目前为止你有没有尝试过?
标签: cognos cognos-10 cognos-bi cognos-8
我有 3 个提示。第一个提示包含值 A 和 B。选择 A 时,应隐藏其余 2 个提示,选择 B 后应显示 2 个提示。所有 3 个提示都是强制性的。谁能帮我实现这个场景?
【问题讨论】:
标签: cognos cognos-10 cognos-bi cognos-8
我将假设您已经知道如何有条件地隐藏和取消隐藏元素,并且您只想知道如何在不提交页面的情况下刷新页面。
您的问题有三种解决方案:
方法 1 - 重新提示按钮
只需向报表添加一个提示按钮并将“Type”属性设置为“Reprompt”即可。我不建议您使用此方法,因为要求用户每次更改提示值时都单击重新提示按钮是不好的用户体验。
方法 2 - JavaScript API
此方法使用 Cognos 支持的 JavaScript API 在值提示更改值时重新提示页面。请注意,该 API 仅在 10.2 及更高版本中可用。
<script>
var report = cognos.Report.getReport('_THIS_');
var valuePrompt = report.prompt.getControlByName('valuePrompt');
var currentValues = (valuePrompt.getValues().length == 0) ? [{'use':''}] : valuePrompt.getValues();
valuePrompt.setValidator(validateValuePrompt);
function validateValuePrompt(values) {
if (values && values.length > 0) {
if (values[0].use != currentValues[0].use) {
currentValues = values;
report.sendRequest(cognos.Report.Action.REPROMPT);
}
} else {
currentValues = [{'use':''}];
}
return true;
}
</script>
对代码进行了优化,因此仅当提示更改为新值时才会发生重新提示操作。这可以防止在系统检查提示的有效性时多次重新提示,这种情况经常发生。
方法 3 - 隐藏依赖提示
此技术使用隐藏值提示来欺骗 Cognos,通过使用级联提示功能将提示与虚拟值提示联系起来,在每次值提示更改时重新提示页面。
每当您更改值提示时,页面都会重新提示以刷新隐藏的提示。
【讨论】: