我有3个提示。 1st Prompt包含值A& B.选择A时,其余2个提示应隐藏,选择B时应显示2个提示。所有3个提示都是强制性的。任何人都可以帮助我实现这种情况吗?
答案 0 :(得分:2)
我将假设您已经知道如何有条不紊地隐藏和取消隐藏元素,并且您只想知道如何在不提交页面的情况下刷新页面。
您的问题有三种解决方案:
方法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在每个值提示更改时重新提交页面。
每当您更改值提示时,页面都会重新提示以刷新隐藏的提示。