1. 概述
1.1 問題描述
下拉框元件是常用的查詢元件之一,實際使用中有一種場景,從某處複製了一個收貨地址,然後貼上到下拉框進行查詢,但是這種複製來的地址裏面有時候會含有空白符(包括:空格、列表符 tab、換行符等)。
例如:當中複製過來的一個地址裏面就含有Tab空白符【 黃島區新技術開發區 65 號】,但是貼上到下拉框中後Tab在文字的最前面被擋住了,部分使用者不知道自己複製了含Tab的文字點選查詢,結果是查詢為空。
1.2 實現思路
1)透過編寫SQL語句實現查詢。
2)為查詢元件新增點選事件,新增JS程式碼實現查詢。
2. 範例一
2.1 資料準備
建立資料集,輸入SQL語句如下,將資料集命名為ds1,如下圖所示:
SELECT * FROM 訂單
where 1=1
${if(len(訂單ID)==0,"","and 訂單ID LIKE '%"+ trim(訂單ID)+ "%'")}
${if(len(貨主地址)==0,"","and 貨主地址 LIKE '%"+ trim(貨主地址)+ "%'")}
公式註釋:
${if(len(訂單ID)==0,"","and 訂單ID LIKE '%"+ trim(訂單ID)+ "%'")}和${if(len(貨主地址)==0,"","and 貨主地址 LIKE '%"+ trim(貨主地址)+ "%'")}主要是為了實現模糊查詢功能。
trim()用於刪除字串的頭尾空白符,空白符包括:空格、列表符 tab、換行符等,並且trim() 不會改變原始字串,不會刪除原有文字內部的空白符。
2.2 報表設計
如下圖所示:
2.3 參數面板設計
1)將參數新增至參數面板,元件選擇為下拉框元件,如下圖所示:
2)為訂單ID的下拉框元件綁定資料字典,如下圖所示:
3)為貨主地區的下拉框元件綁定資料字典,如下圖所示:
2.4 效果預覽
儲存報表,選中分頁預覽,如下圖所示:
注:不支援行動端。
3. 範例二
3.1 資料準備
建立資料集,輸入SQL語句如下,將資料集命名為ds2:
SELECT * FROM 訂單
where 1=1
${if(len(訂單ID)==0,"","and 訂單ID LIKE '%"+ 訂單ID+ "%'")}
${if(len(貨主地址)==0,"","and 貨主地址 LIKE '%"+ 貨主地址+ "%'")}
3.2 報表設計
與 2.2 節一致。
3.3 參數面板設計
1)與 2.3 節相同。
2)選擇查詢按鈕,新增點選事件,如下圖所示:
事件JavaScrip脚本程序碼如下:
var aa = this.options.from.getWidgetByName ("訂單ID");
var bb = this.options.from.getWidgetByName ("貨主地址");
var str1 = aa.getValue();
var str2 = bb.getValue();
var mm1 = str1.tostring().trim();
var mm2 = str2.tostring().trim();
aa.setValue(mm1);
bb.setValue(mm2);
3.4 效果預覽
與 2.4 節一致。
4. 範本下載
已完成範本可參見:
%FR_HOME%webappswebrootWEB-INF eportletsdocJS參數介面JS實體SQL下拉框元件值首尾含有空白符也能實現查詢.cpt
%FR_HOME%webappswebrootWEB-INF eportletsdocJS參數介面JS實體JS下拉框元件值首尾含有空白符也能實現查詢.cpt
點選下載範本: