1. サブフォームとは
テキスト、数値、日付などのコンポーネントを内部に追加できる高機能なコンテナコンポーネントです。たとえば、商品データを入力する際に複数の商品エントリを追加する場合などに使用します。2. 活用シーン
サブフォームは、出庫伝票、入庫伝票、販売伝票などのデータ入力によく使用されます。これらのシーンでは、商品明細をサブフォームに記録し、実際に入力するデータに応じて必要な行数を追加できます。コンポーネントの属性、使い方、例については、コンポーネントインターフェースの説明 をご参照ください。
3. 基本機能
3.1 レイアウトモード
サブフォームのレイアウトを設定します。デフォルトではスプレッドシートモードが使用されます。3.1.1 スプレッドシートモード
スプレッドシート 表示イメージ: 注意:件名およびヘッダーの表示は、レイアウトモードがスプレッドシートの場合、PCでのみ利用できます。3.1.2 タイル表示モード
タイル表示 表示イメージ:3.2 追加ボタン名の設定
追加ボタンの名前は、デフォルトで「Add one」となっています。名前はカスタマイズできます。例: 追加ボタン名の設定3.3 削除ボタン名の設定
削除ボタン名の設定3.4 追加可能な最大レコード数
サブフォームの最大レコード数
3.5 サブフォームの列幅
列幅はカスタマイズ可能なため、長いコンテンツも正しく表示されます。 サブフォームの列幅のカスタマイズ3.6 一括インポート
操作手順:フォームを開くと、サブフォームの下に「一括インポート」ボタンが表示されます。ボタンをクリックして操作を進めてください。(フォームで公開アクセス(サイレントログイン)が有効になっている場合、フォーム内のサブフォームは一括インポートに対応しません。) サブフォームの一括インポートテンプレートのフィールド順序は、フォーム設計時のフィールド順序と一致します。 アクセスページ- サブフォームデータの効率的な入力:Excelによる一括インポートに対応します。
3.7 一括エクスポート
- サブフォームデータの高速エクスポート:
3.8 メインフォーム+サブフォームのコンテンツを一括でExcelにエクスポート
- メインフォームデータとサブフォームデータを一括でエクスポートできます。
- 新しいエクスポート機能:
4. 高度な機能
4.1 操作列
4.1.1 操作列の作成
操作列を作成したら、「編集」をクリックしてアクションをバインドします。 操作列 表示イメージ:4.1.2 コールバック関数
アクション設定 をご参照ください。 アクション - Item-0 コールバック関数 JSパネル4.1.3 カスタムレンダリング
JSXに対応しています。 カスタムレンダリング - アクションのバインド 表示イメージ:5. FAQ
5.1 サブフォームのレコードを一括削除するには?
5.1 サブフォームのレコードを一括削除するには?
サブフォームコンポーネントには、少なくとも1件のレコードを残す必要があります。
5.2 サブフォーム内の特定のコンポーネントの値を取得するには?
5.2 サブフォーム内の特定のコンポーネントの値を取得するには?
サブフォームのデータを取得し、フォームバリデーションやデータソース呼び出しの入力パラメータとして使用したい場合に用います。サンプルコード:
5.3 サブフォームに関連するサブフォーム&サブフォームへの値の代入
5.3 サブフォームに関連するサブフォーム&サブフォームへの値の代入
アプリを跨いだサブフォームデータの関連付けや、フォーム読み込み時のサブフォームデータの初期化によく使用されます。参考: 明細同士の関連
5.4 サブフォームデータのエクスポート&サブフォームデータのレポート分析
5.4 サブフォームデータのエクスポート&サブフォームデータのレポート分析
サブフォームのデータはデータ管理ページでの表示、分析、エクスポートができないため、レポートページ上のスプレッドシートでサブフォームデータを表示・エクスポートする必要があります。参考: サブフォームデータのレポート分析
5.5 サブフォームでリダイレクト関数を設定した場合、その関数を実行するボタンを一度クリックした後に非表示にできますか?
5.5 サブフォームでリダイレクト関数を設定した場合、その関数を実行するボタンを一度クリックした後に非表示にできますか?
カスタムレンダリングに以下のコードを追加することで実現できます:
5.6 サブフォームの上下移動ボタンを設定するには?
5.6 サブフォームの上下移動ボタンを設定するには?
これは隠し機能です。フォームの編集ページに移動し、サブフォームの「並び替えを表示」を有効にすると、以下のように上下移動ボタンが表示されます:
5.7 サブフォーム内の複数行テキストコンポーネントの1行分のテキストの一意性を検証できますか?
5.7 サブフォーム内の複数行テキストコンポーネントの1行分のテキストの一意性を検証できますか?
サブフォーム内のコンポーネントにカスタム検証関数を設定し、サブフォーム内のすべてのレコードを繰り返し処理して、現在のレコードと比較します。
5.8 サブフォームのレコード総数を自動的に取得するには?
5.8 サブフォームのレコード総数を自動的に取得するには?
(1)サブフォームコンポーネントと数値コンポーネントを1つずつ配置し、数値コンポーネントのデフォルトを1に設定します。以下の通りです:(2)「サブフォーム」>「プレミアム」>「アクションを作成」の順にクリックします。onAddClickとonDelClickの2つのアクションを作成する必要があります。アクション作成時にコードを記述します。以下の通りです:以下のコードをそのまま使用できます。注意:1つ目の括弧内に数値コンポーネントの一意識別子、2つ目の括弧内にサブフォームの一意識別子を入力してください。設定については手順(3)をご参照ください。(3)まず、onAddClickアクションを作成します。以下の通りです:次に、上記のコードを貼り付けます:(4)onDelClickアクションを作成し、同じコードを貼り付けます:次に、上記のコードを貼り付けます:「保存」をクリックすると、結果は次のようになります:新しく追加したレコードを削除すると、カウントも自動的に減少します:
5.9 変数でサブフォームのレコード数を制御するには?
5.9 変数でサブフォームのレコード数を制御するには?
(1)数値コンポーネントをドラッグして追加し、数値コンポーネントに「onChange」アクションをバインドします。(2)以下のコードをJSパネルにコピーします:(3)結果:
5.10 サブフォーム内の非表示コンポーネントがnullを返す
サブフォームを処理する際、非表示属性を持つコンポーネントのvalueはリセットされ、nullに設定されます。そのため、非表示状態のサブフォームを別のサブフォームに代入するとnullが返されます。
5.11 メインフォームのフィールド値に基づいてサブフォームコンポーネントの表示/非表示を制御するには?
5.11 メインフォームのフィールド値に基づいてサブフォームコンポーネントの表示/非表示を制御するには?
メインフォームのフィールド値に基づいてサブフォームコンポーネントの状態を制御するには、以下の手順に従います:変数 dp2 を作成サブフォーム内の一行テキストフィールドの状態を変数 state.dp2 にバインドメインフォームのセレクトドロップダウンにアクションをバインドし、状態を変数 dp2 に代入サンプルコード:
5.12 メインフォームの複数選択メンバーコンポーネントの値をサブフォームの複数レコードに反映するには?
5.12 メインフォームの複数選択メンバーコンポーネントの値をサブフォームの複数レコードに反映するには?
以下のように、メインフォームのメンバーコンポーネントにアクションをバインドして代入を実行します:サンプルコード:
5.13 1つのサブフォームには何個のコンポーネントフィールドを配置できますか?
5.13 1つのサブフォームには何個のコンポーネントフィールドを配置できますか?
サブフォームコンポーネントの中にサブフォームコンポーネントを挿入することはできませんが、その他の通常のコンポーネントは追加できます。Freeプランは最大20個、その他のエディションは最大100個まで対応しています。この上限を超えると、読み込みパフォーマンスが低下します。ビジネスロジックの分割を推奨します。
5.11 サブフォームデータの取得方法
共通のコンポーネントAPIgetValue を使用してサブフォームデータを取得できます。
サンプルコード:
5.12 サブフォームの行識別子を取得する方法
サブフォームAPIgetItems を使用してサブフォームの行識別子を取得できます。
サンプルコード:
5.13 サブフォームの特定行のデータを取得する方法
サブフォームAPIgetItemValue を使用してサブフォームの特定行のデータを取得できます。
サンプルコード:
5.14 サブフォームのonChange発火時に現在変更されたフィールドを取得する方法
サブフォームのデータが変更されると、セルの変更だけでなく、数式の計算、データ連動、外部からの代入などによってもサブフォームのonChangeイベントがトリガーされます。変更内容を識別しやすくするため、サブフォームのonChangeイベントのextraパラメータで現在変更されたフィールドを、changesパラメータで変更されたフィールドの値を取得できます。
サンプルコード:
5.15 サブフォーム内のコンポーネントが変更されたときに、現在の行の他のフィールドを更新する方法
サブフォームAPIupdateItemValue を使用して、サブフォームの現在の行の他のフィールドを更新できます。
注意:このAPIはサブフォームコンポーネントのイベントでのみ使用でき、サブフォーム内のコンポーネントのイベントでは使用できません。