【问题标题】:To Prevent Auto Submit from generating the report in Cognos防止自动提交在 Cognos 中生成报告
【发布时间】:2016-08-12 06:57:47
【问题描述】:

我有 3 个提示。第一个提示包含值 A 和 B。选择 A 时,应隐藏其余 2 个提示,选择 B 后应显示 2 个提示。所有 3 个提示都是强制性的。谁能帮我实现这个场景?

【问题讨论】:

  • 到目前为止你有没有尝试过?

标签: cognos cognos-10 cognos-bi cognos-8


【解决方案1】:

我将假设您已经知道如何有条件地隐藏和取消隐藏元素,并且您只想知道如何在不提交页面的情况下刷新页面。

您的问题有三种解决方案:

  1. 添加重新提示按钮
  2. 使用 JavaScript 检测单选按钮何时更改状态并重新提示页面
  3. 使用使用隐藏值提示的解决方法

方法 1 - 重新提示按钮

只需向报表添加一个提示按钮并将“Type”属性设置为“Reprompt”即可。我不建议您使用此方法,因为要求用户每次更改提示值时都单击重新提示按钮是不好的用户体验。

方法 2 - JavaScript API

此方法使用 Cognos 支持的 JavaScript API 在值提示更改值时重新提示页面。请注意,该 API 仅在 10.2 及更高版本中可用。

  1. 命名您的值提示。这是在提示“名称”属性中指定的。在本教程中,我将使用名称“valuePrompt”。
  2. 在报告中添加一个“HTML 项目”。
  3. 打开 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>

对代码进行了优化,因此仅当提示更改为新值时才会发生重新提示操作。这可以防止在系统检查提示的有效性时多次重新提示,这种情况经常发生。

方法 3 - 隐藏依赖提示

此技术使用隐藏值提示来欺骗 Cognos,通过使用级联提示功能将提示与虚拟值提示联系起来,在每次值提示更改时重新提示页面。

  1. 添加新值提示
  2. 将新提示的“必需”属性设置为“否”
  3. 将新提示的“Cascade Source”属性设置为先前存在的值提示的参数
  4. 隐藏新提示
  5. 将原始值提示的“自动提交”属性设置为“是”。

每当您更改值提示时,页面都会重新提示以刷新隐藏的提示。

【讨论】:

  • 令人印象深刻的答案。
  • 嗨 Johnsonium,第二种解决方案是我所期待的。那效果非常好!感谢您的支持!
  • @Saraban 如果有帮助请接受这个答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-23
  • 2019-03-10
相关资源
最近更新 更多