1

我正在使用 Cognos v10.1 。我正在创建一个包含 13 个可选提示的报告。由于很难在单个页面中累积相同的内容并且所有提示都是可选的,因此我正在尝试为复选框编写 javascript 代码。根据复选框中的选择,我想显示提示。我得到了结果,但提示存在问题。在我在我选择的任何提示中选择一些值之前,页面正在刷新。如何防止页面刷新?您能否提出解决方案。提前致谢。

4

2 回答 2

2

我建议在 Cognos 范围内工作,而不是尝试自定义编写 JS。您将不可避免地遇到他们的一些内置函数,这将导致出现跨版本和潜在跨浏览器问题的奇怪行为。

相反,为什么不是 2 个提示页面:

  • 第 1 页:复选框提示使用设置为复选框的值提示。将这些中的每一个与一个变量联系起来。
  • 第 2 页:基于变量有条件地呈现提示。
于 2014-03-03T12:51:38.133 回答
2

如果任何 Cognos 提示是级联提示(Properties->'Cascade Source' 不是空白),它们将在选择父提示后触发提示页面刷新。

此外,任何将 Auto-Submit 属性设置为“是”的提示都会在被选中后触发页面提交(假设已填写所有必需的提示)或刷新您的提示页面(如果尚未填写任何必需的提示)。

Toddnappi 的解决方案是我成功用于此类情况的一种解决方案,如果可能,我强烈建议使用它。Cognos javascript API 在 10.1 中受到限制,但可以预测。您没有理由不能按照您尝试的方式使解决方案发挥作用。

请记住,javascript API 在 10.2 中得到了极大的改进,如果您非常需要自定义构建的 javascript 页面,可能值得研究一下。

编辑:刚刚做了一个测试,我在提示页面中隐藏/显示了可选提示:

Report Studio 中的提示页面

隐藏区域前的 HTML 项:

<script>
function checkDisplayPeriod() {
    var chkBox = document.getElementById("checkBox1");
    var divPeriod = document.getElementById("divHidePeriodPrompt");
    if (chkBox.checked) {
        divPeriod.style.display = 'none';
    } else {
        divPeriod.style.display = 'block';
    }
} 
</script>
<input type="checkbox" id="checkBox1" onclick="checkDisplayPeriod()" />
<div id="divHidePeriodPrompt">

区域后的代码:

</div>

首次加载时的页面: 提示页面初始加载

点击后(不刷新): 点击后的提示页面

于 2014-03-03T18:51:19.113 回答