阻止自动提交在Cognos中生成报告

时间:2016-06-08 05:26:43

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

我有3个提示。 1st Prompt包含值A& B.选择A时,其余2个提示应隐藏,选择B时应显示2个提示。所有3个提示都是强制性的。任何人都可以帮助我实现这种情况吗?

1 个答案:

答案 0 :(得分:2)

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

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

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

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

    方法2 - JavaScript API

    只要值提示更改值,此方法就会使用Cognos支持的JavaScript API重新提示页面。请注意,API仅适用于10.2及更高版本。

    1. 命名您的值提示。这在提示“名称”属性中指定。出于本教程的目的,我将使用名称“valuePrompt”。
    2. 在报告中添加“HTML项目”。
    3. 打开HTML项目并粘贴以下代码:
    4. <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. 将新提示的“级联源”属性设置为先前存在的值提示的参数
      4. 隐藏新提示
      5. 将原始值提示的“Auto-Sumbit”属性设置为“是”。
      6. 每当您更改值提示时,页面都会重新提示以刷新隐藏的提示。