2014-09-26 75 views
0

我很難在Cognos提示頁面中顯示/隱藏提示。我正在使用Cognos 10.2.1。Cognos提示頁面提示使用渲染變量顯示/隱藏

我的要求是,提示頁面選擇不同。我有3個提示。運行報告後,首先提示只需顯示。然後在選擇第一個提示值後,會顯示第二個提示。像vise第三提示。

現在我使用布爾變量ParamDisplayValue <>'0'。如果它的真實意思是它呈現第二個提示。像vise另一個提示。但是在這裏我只需要選擇第一個提示。第二個提示不顯示。

如果您有任何想法,請與我分享。

謝謝& Regards, Chandrasekr。

回答

0

渲染變量僅在頁面渲染時被評估。三種方式他們纔會重新評估:

  1. 用戶點擊一個按鈕被設置爲「重新提示」
  2. 用戶選擇從具有其提示的值「自動提交」屬性設置爲「是「,並且尚未提供必需的提示。
  3. JavaScript是發射時再次提示頁面

1號工作,但你需要用戶到每一個頁面需要刷新時間點擊一個按鈕

2號會,如果你的工作不提供非常好的易用性正在按照要求提示。如果提示是可選的,則當'自動提交'提示設置爲'是'時提示整個提示頁面將被提交。有一個技巧可以使用,涉及一個隱藏的提示,可以解決這個問題,但很麻煩。

3號是最好的選擇,因爲它給你最大的控制。值得慶幸的是,由於Cognos 10.2提供了一個記錄和支持的JavaScript API,因此可以使其變得相當簡單和受支持。以下是步驟:

  1. 給出提示*的名稱,以便在值更改時觸發重新提示。
  2. 將新的HTML項目添加到提示頁面的底部。
  3. 添加以下JavaScript作爲表達:

var report = cognos.Report.getReport("_THIS_"); 
 

 
var prompt = report.prompt.getControlByName("prompt_name"); //Substitue the prompt name you set in step one for the string "prompt_name" 
 

 
var currentvalue = prompt.getValues()[0].use; 
 

 
prompt.setValidator(validatePrompt); //Sets a function to validate the prompt on change 
 

 
function validatePrompt(values) { 
 
    if (values && values.length > 0 && values[0].use != currentvalue) { 
 
    currentvalue = values[0].use; 
 
    report.sendRequest(cognos.Report.Action.REPROMPT); //Reprompt the page 
 
    } 
 
}

的代碼添加驗證功能,當值被改變,這將刷新頁面的提示。根據此值設置初始值和字母檢查的代碼用於防止不必要的刷新,因爲Cognos會在幕後多次啓動對提示的驗證。除非用戶實際更改提示的值,否則不需要刷新頁面。

*此提示應該是文本提示以外的內容,因爲每次按鍵時都會發生文本提示驗證,因此每輸入一個字母都會發生刷新。該技術最適用於價值提示,如列表,下拉菜單或單選按鈕組。