(4) 検索テンプレートの検索条件に値設定

検索テンプレート画面で検索条件に"月"項目(1~12の選択リスト)が存在し、
検索ボタン押下時に"月"に値が未設定の時は当月を設定する。

また、指定月のデータが1件も存在しなかった場合、空レコード31行を追加する。

   拡張対象ページのApexクラス : SkyEditorClass
       対象データテーブルの「ID」   : dataTableSet1

global class MyExtender extends SkyEditor2.Extender {
	SkyEditorClass extension;
	SkyEditorClass.dataTableSet1 monthlyReports;

	public MyExtender(SkyEditorClass extension) {
		this.extension = extension;
		this.monthlyReports = extension.dataTableSet1;
	}

    // 画面初期表示時の処理
    global override void init(){
        // 取引先のIDを取得
        String accountId = ApexPages.currentPage().getParameters().get('accid');
        // reference項目にデフォルト検索条件値を設定
        extension.Component1_val.accountLink__c = accountId;
//      // 「権限緩和」プロパティチェック有りの場合
//      extension.Component1_val.SkyEditor2__Text__c = accountId;
//      extension.Component1_val.SkyEditor2__Textarea__c
//           = [SELECT Name FROM Account Where id = :accountId].Name;
        extension.Component1_op.value = 'eq';
 
        //初期画面表示時に検索処理を実行
        extension.doSearch();
    }

	//検索前の処理
	global override void preSearch(){
		//検索条件を見て、空白なら条件を追加 
		if (extension.Component2_val.month__c == '') {
			extension.Component2_val.month__c  
				= String.valueOf(Date.today().month());
			extension.Component2_op.value = ‘eq’;
		}
	}
	//検索終了後、ゼロ件だった31日分のレコードを作成
	global override void afterSearch() {
		if (monthlyReports.items.size() <= 0) {
			for (Integer i = 0; i < 31 ; i++) {
				this.monthlyReports.add();
			}
		}
	}

	// TestMethod
	private static testMethod void testMyExtender() {
		Account acc = new Account(Name='Test');
		insert acc;
		// 検索対象オブジェクトが取引先の場合
		SkyEditorClass ext = new SkyEditorClass (new ApexPages.StandardController(acc));
		MyExtender extender = new MyExtender(ext);
		ext.doSearch();
	}
}