Cognos v10.1 を使用しています。13 個のオプションのプロンプトを含むレポートを作成しています。同じものを 1 ページに集めるのは非常に難しく、すべてのプロンプトはオプションであるため、チェック ボックスの JavaScript コードを記述しようとしています。チェックボックスの選択に基づいて、プロンプトを表示したいと思います。結果はわかりましたが、プロンプトに問題があります。選択したプロンプトでいくつかの値を選択する前に、ページが更新されます。ページの更新を防ぐには? 解決策を提案してください。前もって感謝します。
2 に答える
JS を独自に記述しようとするよりも、Cognos の範囲内で作業することをお勧めします。必然的に、組み込み関数のいくつかにぶつかり、クロスバージョンやクロスブラウザの問題を引き起こす可能性のある奇妙な動作につながります.
代わりに、2 つのプロンプト ページを使用しないでください。
- ページ 1: チェックボックスに設定された値プロンプトを使用したチェックボックス プロンプト。これらのそれぞれを変数に結び付けます。
- ページ 2: 変数に基づいて条件付きでレンダリングされたプロンプト。
Cognos プロンプトのいずれかがカスケード プロンプトである場合 ([プロパティ] -> [カスケード ソース] が空白以外の場合)、親プロンプトが選択された後にプロンプト ページの更新がトリガーされます。
また、自動送信プロパティが「はい」に設定されているプロンプトは、選択後にページの送信をトリガーするか (必要なプロンプトがすべて入力されている場合)、プロンプト ページを更新します (必要なプロンプトがまだ入力されていない場合)。
Toddnappi のソリューションは、私がこのような状況でうまく使用したものであり、可能であれば使用することを強くお勧めします。Cognos JavaScript API は 10.1 で制限されていますが、予測可能です。あなたがしようとしている方法でソリューションを機能させることができない理由はありません。
10.2 では JavaScript API が大幅に改善されていることに注意してください。カスタム ビルドの JavaScript ページが必要な場合は、検討する価値があります。
編集:プロンプトページでオプションのプロンプトの非表示/表示を行ったテストを行いました:
非表示領域の前の 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>
最初に読み込まれたときのページ:
クリック後 (更新なし):