反饋已提交

網絡繁忙

JS實現超連結跳轉前判斷子範本是否有資料

1. 概述

1.1 應用場景

使用超連結傳參查看子範本相關內容時,如果子範本沒有對應的資料,則主範本直接彈出提示對話框,不跳轉到子範本頁面。如下圖所示:


1.2 實現思路

獲取主範本中需要傳給子範本的參數,然後 JS 中呼叫參數執行子範本的 SQL 查詢,如果傳回空值,彈出對話框且不跳轉,否則跳轉到子範本頁面。

2. 範例

2.1 設計子範本

1)建立普通報表,建立資料集 ds1 ,SQL 語句為:SELECT * FROM Sales

2)如下圖設計表格,將資料集中欄位拖到對應儲存格中。


3)雙擊 A2 儲存格,新增一個過濾條件,讓 ID 列等於參數$P,點選增加按鈕。這裏相當於給這個子範本設定了一個參數,超連結傳參會用到。


4)儲存範本,將範本重命名為:超連結前判斷子表.cpt,並分頁預覽下,記下預覽時的 URL 。


2.2 設計主範本

1)建立內建資料集 ds1 ,表設計如下圖所示,為了營造差異,這個內建資料集比上面子表那個資料集多了一個 ID ,也就是 ID 為 6 的這行資料。

這樣預覽時,點選 6 這個 ID 後,因為查不到資料,所以會彈出對話框。

2)如下圖設計表格,將資料集中欄位拖到對應儲存格。

2.3 新增超連結

開啟主範本,選中 A2 儲存格,新增一個 JavaScript 型別的超連結,設定參數P,其值為公式=$$$,下方輸入 JS 代碼,如下圖所示:


JavaScript 代碼如下:

var sql = "SQL(\"FRDemo\",\"Select ID from sales where ID='"+P+"'\",1)";
var value=FR.remoteEvaluate(sql);
if(value.length!=0){
window.location.href='http://localhost:8075/webroot/decision/view/report?viewlet=doc/SpecialSubject/HyplinkReport/超連結前判斷子表.cpt&P='+P;
}
else{
FR.Msg.alert('警告','資料為空,無法跳轉');
}

注:代碼裏面有個子範本路徑,那個就是子範本的預覽 URL ,在設計子範本時已經提到了。

2.4 關閉腳本呼叫公式限制按鈕

需要關閉安全防護中的「腳本呼叫公式限制」按鈕。如下圖所示:


2.5 效果預覽

儲存主範本,分頁預覽後,效果如 1.1應用場景 中所示。

不支援 App 端和 HTML5 端預覽。

3. 範本下載

已完成範本參見:

%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\HyplinkReport\超連結前判斷主表.cpt

%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\HyplinkReport\超連結前判斷子表.cpt

點選下載範本:

超链前判断主表.cpt

超链前判断子表.cpt


附件列表


主題: 原简体文档
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉