我的报告中包含4个提示。这些提示位于实际报告页面上。这是针对metrics studio包创建的报告。
提示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 :(得分:-1)
如果您只想要清除提示3和4。 单击提示3 - 属性 - 其他 - 名称。 输入&#39; Name3&#39;和类似的名字4&#39;提示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>