2017-07-31 7 views
0

私は4つのプロンプトを含むレポートを持っています。これらのプロンプトは実際のレポートページにあります。これは、メトリックスタジオパッケージに対して作成されたレポートです。Cognosは4つのプロンプトのうち2つをクリアするためにJavaScriptを使用します

プロンプト1は戦略であり、常に選択する必要があります。 プロンプト2:スコアカードプロンプトです

プロンプト1と2が必要です。

プロンプト3と4は、条件付きブロックに配置され、プロンプト2で選択されたものに依存します。プロンプト3または4が表示されます。

プロンプト3と4はオプションです。これらは、スコアカードのサブセットを示すはずです。 (基本的には、スコアカードにカスケードプロンプト機能を使用する方法を理解しようとしています。)

これはすべて正常に動作します。ユーザーがプロンプト2の選択を変更するまで、Cognosは以前に作成したプロンプト3の選択を消去しません(たとえば)。だから、報告書は2プロンプトの新しい選択は表示されませんが、それでもこれを回避するためにプロンプ​​ト3.

の古い選択が表示されます、私はプロンプトをクリアするために、いくつかの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> 

私は多くの元を発見した:私は次のようにこれらの2を結合しようとしてい

レポート内のすべての選択されたプロンプトをクリアする方法についての説明はありますが、プロンプトを一度選択解除することはできません。

私は、ユーザーが単にデフォルトの選択解除]ボタンをクリックしますが、できるよう複数選択のプロンプトであることを私のプロンプト3と4を変更しようとした - ユーザーがそれを望んでいませんでした....うん。

レポートをよりスマートに作成する方法がある場合は、お知らせください。

+0

の下にあなたのJSを変更するあなたの質問の最後のJavaScriptが機能しなかった理由をあなたは言及しませんでした。それはうまくいくようです。 Cognos APIを使用して特定のプロンプトをクリアするには、プロンプト・オブジェクトへの参照を取得し、それに対してclearValues()をコールするだけです。それはあなたの最後のスニペットがやっているようだ。 – Johnsonium

答えて

-1

プロンプト3と4だけをクリアしたい場合は、 プロンプト3 - プロパティ - その他 - 名前をクリックします。 4.プロンプト

ため タイプ「NAME3」と同様に「NAME4は」今まで

<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> 
関連する問題