首页 文章

Cognos使用javascript清除4个提示中的2个

提问于
浏览
0

我有一个包含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修改为多选提示,这样用户只需单击默认的取消选择按钮即可 - 是的....用户不希望这样 .

如果有更智能的方式来设计我的报告,请告诉我 .

1 回答

  • -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>
    

相关问题