An editable grid of related records inside a parent form — the way to manage a one-to-many relationship without leaving the page.
- Editing the many side of a relationship in place, such as the lines of an order, where rows are added and removed alongside the parent record.
Binds to a field path on a parent Form that holds an array of rows. Rows are saved with the parent record, not independently.
- Order lines edited together with the order header.
- Contact phone numbers managed from the contact form.
- Using it to display related records that are never edited — a read-only Table is lighter and supports paging.
- Expecting to lay out the row yourself: the columns come from the field configuration, not from child elements.
Use instead
- Table — Use instead for read-only related data, or when the list needs paging, sorting and its own filters.
Configure these in the Application Designer property panel. Group headings mirror the editor where possible. Data Source is where the element gets its rows or field binding (a view/query, a connector operation, or a parent form field). References appear only for view-backed sources and map foreign-key ID columns to readable labels from another view.
- Where this element loads its data (view, query, connector, or element).Default: {"elementId":"","fieldPath":[]}
- Configuration for fields.Default: []
- Configuration for default Value.Default: none
- When true, the control cannot be edited.Default: none
- Whether the field may be left empty.Default: none
Inside dataSource: (dataSource)
- Another element on the page whose data backs this field.Default: none
- Path into the source element’s data (property segments).Default: []
- Minimum size: 3 × 3 grid cells (width × height).
- Default size when dropped on a page: 4 × 3.
Other parts of your app can read live values from this element in custom expressions:
elements.mySubFormTable.<property>
value
Array<object>
Current input value of this control.
elements.mySubFormTable.value.length
When All nested rows as currently edited. Read `.length` to show a count that updates as rows are added.
errors
any
Field-level validation errors after submit or blur.
elements.mySubFormTable.errors
touched
boolean
Map of fields the user has interacted with.
elements.mySubFormTable.touched
disabled
boolean
True while the control is locked and cannot be edited.
elements.mySubFormTable.disabled
selected
object
Currently selected row(s) in the table.
elements.mySubFormTable.selected
When The nested row the user has highlighted, for driving a detail panel beside the grid.
To use one of these, open the property you want to drive on the other element, switch it to expression mode in the Expression Editor, and enter:
| |
Replace mySubFormTable with this element’s unique id. Select the element in Application Designer and copy the id chip at the top of the right-hand property panel.
Drag this element into one of these containers:
- Form — Saved as part of the parent Form; there is no separate save for the nested rows.
| |