(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(); } }