我有三个提示。第一个提示包含值A&B.选择A时,其余2个提示应隐藏,选择B时,应显示2个提示。所有3个提示都是强制性的。有人能帮我实现这个场景吗?
我假设您已经知道如何有条件地隐藏和取消隐藏元素,并且您只想知道如何在不提交的情况下刷新页面。
你的问题有三种解决方案:
- 添加一个重新启动按钮
- 使用JavaScript检测单选按钮何时更改状态并重新启动页面
- 使用使用隐藏值提示的解决方法
方法1-重按按钮
这只需在报告中添加一个提示按钮,并将"Type"属性设置为"Repcompt"即可完成。我不建议您使用这种方法,因为每次更改提示值时都要求用户单击"重新启动"按钮会给用户带来不好的体验。
方法2-JavaScript API
每当值提示更改值时,此方法都使用Cognos-supported JavaScript API来重新尝试页面。请注意,API仅在10.2及更高版本中提供。
- 命名您的值提示。这是在提示的"Name"属性中指定的。出于本教程的目的,我将使用名称"valuePrompt">
- 向报表中添加"HTML项">
- 打开HTML项并粘贴以下代码:
<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>
代码经过了优化,因此只有当提示更改为新值时才会执行repmpt操作。当系统检查提示的有效性时,这可以防止多次重试,这种情况经常发生。
方法3-隐藏的相关提示
该技术使用隐藏值提示,通过使用级联提示功能将提示绑定到伪值提示,诱使Cognos在每次值提示更改时重新尝试页面。
- 添加新的值提示
- 将新提示的"Required"属性设置为"No">
- 将新提示的"Cascade Source"属性设置为以前存在的值提示的参数
- 隐藏新提示
- 将原始值提示的"自动Sumbit"属性设置为"是">
无论何时更改值提示,页面都会重新启动以刷新隐藏的提示。