2014-09-26 104 views
0

我很难在Cognos提示页面中显示/隐藏提示。我正在使用Cognos 10.2.1。Cognos提示页面提示使用渲染变量显示/隐藏

我的要求是,提示页面选择不同。我有3个提示。运行报告后,首先提示只需显示。然后在选择第一个提示值后,会显示第二个提示。像vise第三提示。

现在我使用布尔变量ParamDisplayValue <>'0'。如果它的真实意思是它呈现第二个提示。像vise另一个提示。但是在这里我只需要选择第一个提示。第二个提示不显示。

如果您有任何想法,请与我分享。

谢谢& Regards, Chandrasekr。

回答

0

渲染变量仅在页面渲染时被评估。三种方式他们才会重新评估:

  1. 用户点击一个按钮被设置为“重新提示”
  2. 用户选择从具有其提示的值“自动提交”属性设置为“是“,并且尚未提供必需的提示。
  3. JavaScript是发射时再次提示页面

1号工作,但你需要用户到每一个页面需要刷新时间点击一个按钮

2号会,如果你的工作不提供非常好的易用性正在按照要求提示。如果提示是可选的,则当'自动提交'提示设置为'是'时提示整个提示页面将被提交。有一个技巧可以使用,涉及一个隐藏的提示,可以解决这个问题,但很麻烦。

3号是最好的选择,因为它给你最大的控制。值得庆幸的是,由于Cognos 10.2提供了一个记录和支持的JavaScript API,因此可以使其变得相当简单和受支持。以下是步骤:

  1. 给出提示*的名称,以便在值更改时触发重新提示。
  2. 将新的HTML项目添加到提示页面的底部。
  3. 添加以下JavaScript作为表达:

var report = cognos.Report.getReport("_THIS_"); 
 

 
var prompt = report.prompt.getControlByName("prompt_name"); //Substitue the prompt name you set in step one for the string "prompt_name" 
 

 
var currentvalue = prompt.getValues()[0].use; 
 

 
prompt.setValidator(validatePrompt); //Sets a function to validate the prompt on change 
 

 
function validatePrompt(values) { 
 
    if (values && values.length > 0 && values[0].use != currentvalue) { 
 
    currentvalue = values[0].use; 
 
    report.sendRequest(cognos.Report.Action.REPROMPT); //Reprompt the page 
 
    } 
 
}

的代码添加验证功能,当值被改变,这将刷新页面的提示。根据此值设置初始值和字母检查的代码用于防止不必要的刷新,因为Cognos会在幕后多次启动对提示的验证。除非用户实际更改提示的值,否则不需要刷新页面。

*此提示应该是文本提示以外的内容,因为每次按键时都会发生文本提示验证,因此每输入一个字母都会发生刷新。该技术最适用于价值提示,如列表,下拉菜单或单选按钮组。