Skip to main content

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にエクスポート

  • メインフォームデータとサブフォームデータを一括でエクスポートできます。
  • 新しいエクスポート機能:
フォームページ データ詳細情報ページ Excelスプレッドシートページ

4. 高度な機能

4.1 操作列

4.1.1 操作列の作成

操作列を作成したら、「編集」をクリックしてアクションをバインドします。 操作列 表示イメージ:

4.1.2 コールバック関数

アクション設定 をご参照ください。 アクション - Item-0 コールバック関数 JSパネル

4.1.3 カスタムレンダリング

JSXに対応しています。 カスタムレンダリング - アクションのバインド 表示イメージ:

5. FAQ

サブフォームコンポーネントには、少なくとも1件のレコードを残す必要があります。
以下のように、削除アクションを設定してください:注意:このアクションはデフォルトですべてのレコードを削除します。選択による一括削除には現時点で対応していません。
サブフォームのデータを取得し、フォームバリデーションやデータソース呼び出しの入力パラメータとして使用したい場合に用います。サンプルコード:
アプリを跨いだサブフォームデータの関連付けや、フォーム読み込み時のサブフォームデータの初期化によく使用されます。参考: 明細同士の関連
サブフォームのデータはデータ管理ページでの表示、分析、エクスポートができないため、レポートページ上のスプレッドシートでサブフォームデータを表示・エクスポートする必要があります。参考: サブフォームデータのレポート分析
カスタムレンダリングに以下のコードを追加することで実現できます:
これは隠し機能です。フォームの編集ページに移動し、サブフォームの「並び替えを表示」を有効にすると、以下のように上下移動ボタンが表示されます:
サブフォーム内のコンポーネントにカスタム検証関数を設定し、サブフォーム内のすべてのレコードを繰り返し処理して、現在のレコードと比較します。
(1)サブフォームコンポーネントと数値コンポーネントを1つずつ配置し、数値コンポーネントのデフォルトを1に設定します。以下の通りです:(2)「サブフォーム」>「プレミアム」>「アクションを作成」の順にクリックします。onAddClickとonDelClickの2つのアクションを作成する必要があります。アクション作成時にコードを記述します。以下の通りです:以下のコードをそのまま使用できます。注意:1つ目の括弧内に数値コンポーネントの一意識別子、2つ目の括弧内にサブフォームの一意識別子を入力してください。設定については手順(3)をご参照ください。
(3)まず、onAddClickアクションを作成します。以下の通りです:次に、上記のコードを貼り付けます:(4)onDelClickアクションを作成し、同じコードを貼り付けます:次に、上記のコードを貼り付けます:「保存」をクリックすると、結果は次のようになります:新しく追加したレコードを削除すると、カウントも自動的に減少します:
(1)数値コンポーネントをドラッグして追加し、数値コンポーネントに「onChange」アクションをバインドします。(2)以下のコードをJSパネルにコピーします:
(3)結果:

5.10 サブフォーム内の非表示コンポーネントがnullを返す

サブフォームを処理する際、非表示属性を持つコンポーネントのvalueはリセットされ、nullに設定されます。そのため、非表示状態のサブフォームを別のサブフォームに代入するとnullが返されます。
メインフォームのフィールド値に基づいてサブフォームコンポーネントの状態を制御するには、以下の手順に従います:変数 dp2 を作成サブフォーム内の一行テキストフィールドの状態を変数 state.dp2 にバインドメインフォームのセレクトドロップダウンにアクションをバインドし、状態を変数 dp2 に代入サンプルコード:
以下のように、メインフォームのメンバーコンポーネントにアクションをバインドして代入を実行します:サンプルコード:
サブフォームコンポーネントの中にサブフォームコンポーネントを挿入することはできませんが、その他の通常のコンポーネントは追加できます。Freeプランは最大20個、その他のエディションは最大100個まで対応しています。この上限を超えると、読み込みパフォーマンスが低下します。ビジネスロジックの分割を推奨します。

5.11 サブフォームデータの取得方法

共通のコンポーネントAPI getValue を使用してサブフォームデータを取得できます。 サンプルコード:
レスポンス例:

5.12 サブフォームの行識別子を取得する方法

サブフォームAPI getItems を使用してサブフォームの行識別子を取得できます。 サンプルコード:
レスポンス例:

5.13 サブフォームの特定行のデータを取得する方法

サブフォームAPI getItemValue を使用してサブフォームの特定行のデータを取得できます。 サンプルコード:
レスポンス例:

5.14 サブフォームのonChange発火時に現在変更されたフィールドを取得する方法

サブフォームのデータが変更されると、セルの変更だけでなく、数式の計算、データ連動、外部からの代入などによってもサブフォームのonChangeイベントがトリガーされます。変更内容を識別しやすくするため、サブフォームのonChangeイベントのextraパラメータで現在変更されたフィールドを、changesパラメータで変更されたフィールドの値を取得できます。 サンプルコード:
結果:

5.15 サブフォーム内のコンポーネントが変更されたときに、現在の行の他のフィールドを更新する方法

サブフォームAPI updateItemValue を使用して、サブフォームの現在の行の他のフィールドを更新できます。
注意:このAPIはサブフォームコンポーネントのイベントでのみ使用でき、サブフォーム内のコンポーネントのイベントでは使用できません。
サンプルコード:
結果: 商品名を入力すると、現在の行の商品名の値が商品名のコピーに代入されます。