2017-07-31 40 views
0

我有一个包含4个提示的报告。这些提示位于实际报告页面上。这是根据指标studio包创建的报告。Cognos使用javascript清除4个提示中的2个

提示1是策略性的,总是需要选择。 提示2:是记分卡提示

提示1和2是必需的。

提示3和4被放置在一个条件块中,并且取决于提示符2中选择的内容:将显示提示符3或4。

提示3和4是可选的。这些应该显示记分卡的一个子集。 (基本上我试图找出使用级联提示功能记分卡的方法。)

这一切工作正常。直到用户想要更改他对提示2的选择。Cognos不会清除以前为提示3(例如)做出的选择。因此,报告不会显示提示2的新选择,但仍会显示提示3的旧选择。

为了解决此问题,我想使用一些JavaScript来清除提示。我承认,我避免了像Cognos中的瘟疫一样的JavaScript,所以我对它并不是很有经验。我试图找到一个解决方案,并提出了一些建议,但这些清除了所有提示,我只是希望能够清除提示3和4而不是全部提示。

我发现这个片断它工作得很好,但不幸的是它会清除所有提示值:

<script type="text/javascript"> 
var oCR = cognos.Report.getReport("_THIS_"); 
function clearAllValues() { 
     var aControls = oCR.prompt.getControls(); 
     for (var i = 0; i < aControls.length; i++) { 
      aControls[i].clearValues(); 
     } 
    } 
oCR.onload = clearAllValues(); 
</script> 

我找到了第二个例子,这似乎接近我想要做的是:

function clearRefresh() { 

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

var vNationality = oCR.prompt.getControlByName("Nationality"); 
var vDomicile = oCR.prompt.getControlByName("Domicile"); 
var vLevel = oCR.prompt.getControlByName("Level"); 
var vFeeCategory = oCR.prompt.getControlByName("Fee"); 
var vCourseStage = oCR.prompt.getControlByName("CourseStage"); 


vNationality.clearValues(); 
vDomicile.clearValues(); 
vLevel.clearValues(); 
vFeeCategory.clearValues(); 
vCourseStage.clearValues(); 

oCR.sendRequest (cognos.Report.Action.REPROMPT); 

} </script> 

<a href="JavaScript:clearRefresh()">Clear All & Refresh 

我已经试过这两个结合起来如下:

<script type="text/javascript"> 
var oCR = cognos.Report.getReport("_THIS_"); 
function clearValues() { 
    var vVPE = oCR.prompt.getControlByName("VPE"); 
    var vSPEC = oCR.prompt.getControlByName("SPEC"); 

vVPE.clearValues(); 
vSPEC.clearValues(); 

    } 
oCR.onload = clearValues(); 
</script> 

我发现许多前关于如何清除报告中的所有选定提示,但尚未找到任何允许单个取消提示的选项。

我试图修改我的提示3和4是多选提示,所以用户可以只点击默认的取消选择按钮,但是 - 是的......用户不想这样做。

如果有更聪明的方式来设计我的报告,请让我知道。

+0

你没有提到为什么上次的JavaScript在你的问题没有工作。它似乎应该工作。使用Cognos API清除特定提示只需获取对提示对象的引用,然后调用clearValues()即可。这就是你最后的片段似乎在做的事情。 – Johnsonium

回答

-1

如果你只是想清除提示3和4。 点击提示3 - 属性 - 杂项 - 名称。 类型“NAME3”和类似“NAME4”的提示4.

现在改变你的JS以下

<script type="text/javascript"> 
function clearRefresh() { 
var oCR = cognos.Report.getReport("_THIS_"); 
var f = getFormWarpRequest(); 
var Name3 = f._oLstChoicesName3; 
var Name4 = f._oLstChoicesName4; 
Name3.selectedIndex = -1; 
Name4.selectedIndex = -1; 
oCR.sendRequest (cognos.Report.Action.REPROMPT); 
} 
</script>