(1) 画面表示時に新規行追加 (標準機能で対応しています)

画面表示時に新規レコード5行を空行で表示する。

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

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

	public MyExtender(SkyEditorClass extension) {
		this.extension = extension;
		this.contacts = extension.dataTableSet1;
	}
	// 新規行を5行追加
	global override void init() {
		Account record = extension.record;
		if (record.Id == null) {
			for (Integer i = 0; i < 5; i++) {
				contacts.add();
			}
		}
	}
	// データ未入力の空行を削除
	global override void preSave() {
		removeEmptyRecords();
	}
	private void removeEmptyRecords() {
		List<SkyEditorClass.dataTableSet1Item> items = contacts.items;
		for (Integer i = items.size() - 1; i >= 0; i--) {
			SkyEditorClass.dataTableSet1Item item = items[i];
			// 対象オブジェクトが取引先責任者の場合
			Contact c = item.record;
			// 「姓」が未入力の行を削除
			if (c.Id == null && c.LastName == null) {
				item.remove();
			}
		}
	}
	// TestMethod
	private static testMethod void testMyExtender() {
		Account acc = new Account(Name='Test');
		insert acc;
		Contact cont = new Contact(Account = acc, FirstName = 'TestUser');
		insert cont;
		SkyEditorClass ext = new SkyEditorClass(new ApexPages.StandardController(cont));
		MyExtender extender = new MyExtender(ext);
		PageReference page = ext.doSave();
	}
}