Cognos使用javascript清除4个提示中的2个
问题描述:
我有一个包含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是多选提示,所以用户可以只点击默认的取消选择按钮,但是 - 是的......用户不想这样做。
如果有更聪明的方式来设计我的报告,请让我知道。
答
如果你只是想清除提示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>
你没有提到为什么上次的JavaScript在你的问题没有工作。它似乎应该工作。使用Cognos API清除特定提示只需获取对提示对象的引用,然后调用clearValues()即可。这就是你最后的片段似乎在做的事情。 – Johnsonium