2016-06-08 85 views
0

我有3个提示。第一个提示包含值A & B.在选择A时,剩下的2个提示应该隐藏,选择B后应显示2个提示。所有3个提示都是强制性的。任何人都可以帮助我实现这种情况?防止自动提交在Cognos中生成报告

+0

你到目前为止尝试过什么吗? – Darek

回答

2

我假设您已经知道如何有条件地隐藏和取消隐藏元素,并且您只是想知道如何刷新页面而不提交它。

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

  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. 设置“层叠来源”属性为新的提示是先前存在的值提示的参数
  4. 隐藏新提示
  5. 将原始值提示的'Auto-Sumbit'属性设置为'是'。

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

+0

令人印象深刻的答案。 – Darek

+0

Hi约翰逊,第二个解决方案是我期待的那个。这非常有效!感谢您的支持! – Saraban

+0

@Saraban如果有帮助,请接受这个答案 –