The Table field is an advanced field that allows you to capture and display repeating data sets in a tabular format. Rows can be added or prepopulated from a data source and edited by viewing all row column data or directly viewing them on the table view.
This article focuses on the Table field, but Page fields can also capture repeatable data if you prefer a different approach.
In this article
- Table Basics
- Form fields as Columns
- Adding Rows
- Table Navigation
- Unique Properties
- Populate from a Data Source
- New Row Button
- Edit in Table Display
- Disable Table Display
- Show Search Bar
- Repeatable Formula Functions
- PRIOR('dataname' , occurences)
- SUM({{numField}})
- JOIN('separator' , {{textField}})
- Auto-Populating from a Data Source
- Binding to Data Source Columns
- Updating Rows
- Current Table Limitations
Table Basics
Form fields as Columns
The columns of your Table are defined by the Form fields you place within the Table field (i.e., Text, Numeric, Date/Time). By default, the Table will display columns for each field based on the order in which they appear within the Table field, but select fields can be disabled from the table display.
Depending on your device, the table automatically shows 3 columns for phones and up to 6 columns for tablets. If there are more columns, you can scroll horizontally to view them or drill down into the row to view all fields.
Adding Rows
By default, a "New Row" button appears at the bottom of the Table display on the app, allowing users to add rows.
When the app user taps the button, the app navigates to a unique row page that displays the fields added to the Table design. Once the user has filled in one row, they can navigate back to the main Form page or jump forward to add another row in the Table.
Table Navigation
Should your table have several columns populated with data and the data cannot fit into the width of a single screen, the app will automatically allow you to scroll horizontally to see the data in those columns before selecting and drilling down into a row.
You can also enhance table navigation by using Action buttons to add a new repeat (new table row) or return to the page and view all the entries in the table.
Unique Properties
Populate from a Data SourceAutomatically fills this Table with rows from a Data Source. Use filters on the Data Source to dynamically reload the Table based on other field values.Helpful in providing a pre-populated list of items for scenarios such as checklists, stock-takes, and orders. Users can also add and update Data Source rows via the Table. To link fields with Data Source columns, use the 'Bind to Data Source Column' property on target Table fields. We currently support a maximum of 250 rows displayed in a table.If the data source's rows exceed this after any filters are applied, then only the first 250 rows will populate the table. | |
New Row ButtonCustomize the button, which allows the user to add new rows to the Table.If left blank, a standard button is shown with the 'Add Row' text. | |
Edit in Table DisplayIt enables updating individual table cells directly in the app without viewing the dedicated row page. | |
Show Search BarBy default, the Table field search bar is visible; disable this option to hide the search bar. | |
Read-OnlyFields nested within a Table field will inherit the read-only property set on the Table field. | |
Disable Table DisplayUse this option to exclude fields from being displayed as a column in the Table View.Note that a field's visibility property doesn't control the Table column display; it's whether the field has a value. Hence, if set to FALSE() or conditionally driven, a column will still display if the field has a value. |
Repeatable Formula Functions
As repeatable data is captured in your table, you might want to copy values forward into a new repeat, sum up numeric fields, or join text together. When these are your requirements, the following formula will come in handy.
PRIOR('dataname' , occurences)
Gets the previous repeat/row value(s) of the named field within a Table, starting from the current repeat context.
Used in the Dynamic Value of a field in the Table.
SUM({{numField}})
Sums a Numeric field across all repeats/rows of a Table.
Used in the Dynamic Value of a field outside the Table.
JOIN('separator' , {{textField}})
Joins the given values end-to-end, separated by the given separator.
Used in the Dynamic Value of a field outside the Table.
For more information, please view our Formula Cheat Sheet.
Auto-Populating from a Data Source
Table fields can be populated from a data source by enabling the Populate From Data Source property and selecting a data source from the drop-down. Fields inside the Table can then be bound to columns from the linked data source, which can generate rows and prepopulate field values.
Binding to Data Source Columns
When a table is populated from a data source, the Bind To Data Source property on fields becomes an option, allowing you to select the column to bind to. All fields in the table do not need to be bound to the data source; mixing bound and unbound fields is possible. Fields not in the table cannot be bound to the linked Table field data source.
Updating Rows
When the Create/Update Rows property of the Table's linked data source is ticked, fields bound to that data source's columns will create or update the respective row's data when the unique identifying row finds a match. Otherwise, a new row will be created.
Note When a Table populated from a datasource has its visibility toggled, i.e., invisible and then visible again. Any previously captured/edited row data will be lost with the populated table being reset when becoming visible again.
Current Table Limitations
Tables have some restrictions that should be noted when considering your Form design:
- Tables placed within repeatable Pages are not supported (in particular for Data Template outputs)
- Image/media fields do not currently display as columns
- Dynamic Value references to a Table field data source are not supported. The only way to currently interact with a table field data source is through the Bind To Data Source property found on fields inside the table.
- Datasource-driven tables are limited to 250 rows.