我有一個包含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是多選提示,所以用戶可以只點擊默認的取消選擇按鈕,但是 - 是的......用戶不想這樣做。
如果有更聰明的方式來設計我的報告,請讓我知道。
你沒有提到爲什麼上次的JavaScript在你的問題沒有工作。它似乎應該工作。使用Cognos API清除特定提示只需獲取對提示對象的引用,然後調用clearValues()即可。這就是你最後的片段似乎在做的事情。 – Johnsonium