(12)検索条件の追加
検索テンプレートの検索時に任意の条件を追加します。
このサンプルコードでは検索条件「conditionValue」をAppComponentによる値入力を想定しています。また、事前に検索結果テーブルのIDを「resultTable」に変更したとします。
拡張対象ページのApexクラス : SearchConditionSample
global with sharing class SearchConditionSampleExtender extends SkyEditor2.Extender{ SearchConditionSample ext; //条件の値 public String conditionValue {get; set;} private MyQueryListener myListner; public SearchConditionSampleExtender(SearchConditionSample extension){ this.ext = extension; } public override void init(){ System.debug('init:'); myListner = new MyQueryListener(); //検索結果テーブルのIDでQueryMapを取得 ext.QueryMap.get('resultTable'). addListener(myListner); } public override void preSearch(){ // 条件に使われていたら追加 if(String.isBlank(conditionValue)){ myListner.setMyWhereClause(null); }else{ String sWhere = 'text__c = ' + conditionValue; myListner.setMyWhereClause(sWhere); } } // QueryListenerはSVEの検索処理を拡張するためのインターフェース。これを実装することで追加のクエリーを発行することが出来ます。 public class MyQueryListener implements SkyEditor2.QueryListener{ private string myWhereClause; public void setMyWhereClause(String s){ myWhereClause = s; } public void apply(SkyEditor2.Query query){ if(String.isNotBlank(myWhereClause)){ query.addWhereIfNotFirst('AND'); query.addWhere(myWhereClause); } } } }