Skip to content

Data Table Widget ​

The Data Table Widget displays records from a Project Database table in a ready-made, interactive table interface. Use it when application users need to view or search records, download data, or perform record-oriented actions such as creating, editing, refreshing, or deleting records.

A Data Table Widget is different from a basic Table Page Element. A basic Table provides a visual structure whose content is arranged in the Page Editor. A Data Table Widget is configured to display Project records and can work with Page Flow to support data-driven interactions and workflows.

For a manually maintained comparison table, see Tables and Cards. For custom repeated layouts, such as product cards or search-result tiles, see Data Design.

When to Use a Data Table Widget ​

Use a Data Table Widget when you need:

  • A standard record list backed by a Project Database table.
  • Configurable columns based on fields in that table.
  • Search, refresh, download, and pagination controls.
  • New, Edit, Delete, or other record-oriented actions.
  • New or Edit actions that open Forms as modals.
  • Page Flow that responds to a selected row or coordinates custom actions.
  • A record list whose source is provided through a Custom Query.

Typical examples include customer directories, order lists, registration records, inventory lists, administrative screens, and records associated with a particular user or account.

Data Table Widget vs. Other Display Options ​

RequirementRecommended Approach
Display a fixed feature comparison or manually maintained tableBasic Table
Display Project records in a conventional table interfaceData Table Widget
Provide built-in record-oriented controls and actionsData Table Widget
Display records as custom cards, tiles, or visually designed rowsData Design
Present a small number of manually arranged summary panelsCards

The Data Table Widget is usually the simplest starting point for a standard record list. Use Data Design when the layout of each record needs more customization than a conventional table provides.

Before You Begin ​

A Data Table Widget displays data from a selected Project table. Before configuring it, identify:

  1. The Project table containing the records to display.
  2. The fields that application users need to see.
  3. The intended users and the data they are authorized to access.
  4. The required actions, such as viewing, creating, editing, or deleting records.
  5. Any Forms that should open for New or Edit operations.
  6. Whether Page Flow is needed for custom queries, modal interactions, or additional record actions.

You do not need to build a custom Page Flow just to place a Data Table Widget on a Page and display records through its ordinary table configuration. Add Page Flow when the table's data or interactions require application-specific behavior.

Database table definitions and access rules are managed separately under Database. The Widget determines how records are presented and how supported user interactions are initiated; it does not replace the Project's data-access configuration.

Adding and Configuring a Data Table Widget ​

A typical setup workflow is:

  1. Open the Page or other supported editing context in the Page Editor.
  2. Select the layout area where the record list should appear.
  3. Open the Element Library and add a Data Table Widget.
  4. Select the widget and open Element Settings from the Selected Element Toolbar.
  5. Choose the Table whose records the widget should display.
  6. Decide whether to show the table's fields by default or enable Select Columns to Display.
  7. Configure the visible columns, their order, widths, and responsive visibility as needed.
  8. Choose whether to show column headings and the built-in toolbar.
  9. Enable Custom Query only if Page Flow should provide the record source.
  10. Configure any required Forms, row actions, and Page Flow behavior.
  11. Save and Preview the Page using representative records and supported screen sizes.

For example, an administrative Orders Page might contain:

text
Orders Page
  Heading (Orders)
  Data Table Widget (Orders List)
    Project Table: Orders
    Display Columns: Order Number, Customer, Date, Status, Total
    Toolbar: Visible

The structure above illustrates the Page and Widget configuration. It is not a Page Flow block specification.

Once configured, the Widget supplies the table-style presentation. The underlying Project table, access rules, and optional application workflows determine which records users can retrieve and what they can do with them.

Data Table Settings ​

The following settings are available in the Data Table Widget's Element Settings:

SettingPurpose
TableSelects the Project Database table whose records the Widget displays.
Select Columns to DisplayAllows specific table fields to be selected, ordered, and configured as display columns.
Custom QueryAllows Page Flow to supply or control the records displayed by the Widget.
Hide Column HeadingsHides the header row containing column labels.
Hide ToolbarHides the built-in toolbar containing search, refresh, download, pagination, and New controls.

Table ​

Table identifies the Project table associated with the Data Table Widget.

Select the table containing the records you want users to view or work with. For example:

PageExample Project Table
CustomersCustomers
OrdersOrders
Event RegistrationsRegistrations
InventoryInventory

These are illustrative table names; use the tables defined in your Project.

The Table setting is required. Without a selected table, the Widget cannot be configured to display the intended records.

Choosing a table does not grant the current user permission to read or modify its records. Review the applicable Database access configuration for the published application.

Select Columns to Display ​

Enable Select Columns to Display when you want to control which fields appear, their order, and their column-specific display settings.

This is useful when a Project table contains more fields than users need in the current interface.

For example, a Customers table might contain internal identifiers, contact details, account metadata, and audit fields, while the Customer List Page only needs to show Name, Email, Status, and Created Date.

See Selecting and Configuring Columns for the available column options.

Custom Query ​

Enable Custom Query when the Widget's record source should be supplied through Page Flow instead of relying only on the selected Project table's default data display.

This is useful for views involving application context, filters, selected records, or other data-retrieval logic.

A Custom Query is not required for every Data Table Widget. If the selected Project table and ordinary Widget behavior meet the requirement, keep the setup simple.

See Using Custom Queries for implementation patterns and considerations.

Hide Column Headings ​

Hide Column Headings removes the visible header row that identifies the columns.

Leave the headings visible for most record lists. They make it easier to understand fields such as Date, Amount, Status, or Owner.

Hiding headings can be appropriate in a compact or tightly designed display where the meaning of each column is already clear. Preview the result with real records to ensure that users can still interpret the data.

Hide Toolbar ​

Hide Toolbar removes the Widget's built-in toolbar from the visible interface.

Use it when the Page should present the table without the standard controls or when the surrounding Page and Page Flow provide a more specialized interaction.

Hiding the toolbar is a presentation decision. Do not treat it as a data-access restriction or as a substitute for authorization checks on the underlying operations.

Selecting and Configuring Columns ​

By default, the Data Table Widget can display fields from the selected Project table. Enable Select Columns to Display to configure a specific list of display columns.

Each selected column provides these options:

Column OptionPurpose
Data FieldSelects the field from the Project table to display.
Column Width %Sets an optional percentage-based width for the column. Leave blank for automatic sizing.
Hide on DesktopHides the column on desktop-sized screens.
Hide on TabletHides the column on tablet-sized screens.
Hide on MobileHides the column on mobile-sized screens.

Columns can be edited, removed, and reordered. The order in the configuration list determines their display order.

Choosing Display Fields ​

Start with the information users need to perform their task.

For example, an Orders list could use:

Display OrderData FieldWhy It Is Useful
1Order NumberIdentifies the record.
2CustomerIdentifies who placed the order.
3Order DateProvides time context.
4StatusShows the current state.
5TotalDisplays the order amount.

Additional fields can remain in the underlying Project table without being displayed as columns.

A display column is not a separate Database field. It represents an existing field through the Widget's table presentation.

Column Width % ​

Use Column Width % when a field needs more or less horizontal space relative to the table layout.

For example, a Customer Name or Description field may need more room than a short Status value.

Leave the width blank when automatic sizing produces an acceptable result. When assigning widths, preview the table with long values and at different viewport widths; percentages alone do not guarantee that every field will fit without wrapping or overflow.

Responsive Column Visibility ​

Use Hide on Desktop, Hide on Tablet, and Hide on Mobile to tailor the visible columns to each supported screen size.

For example:

FieldDesktopTabletMobile
Order NumberShowShowShow
CustomerShowShowShow
Order DateShowShowHide
StatusShowShowShow
TotalShowShowHide

This is an example of a configuration choice, not an automatic responsive layout applied by ioLoop.

On narrow screens, retain the fields users need to identify and act on each record. Hide lower-priority columns where appropriate, then test the result in Preview.

Column visibility controls presentation, not authorization. A hidden column must not be used as the mechanism for protecting confidential information. Configure access to sensitive data through the appropriate Database and Backend controls.

Built-In Toolbar Controls ​

When Hide Toolbar is disabled, the Data Table Widget provides built-in controls for common record-list tasks.

ControlBehavior
RefreshReloads the table's data.
SearchFilters displayed rows by matching text fields.
DownloadExports displayed table data as a CSV file.
PreviousMoves to the previous page when pagination is in use.
NextMoves to the next page when pagination is in use.
NewInitiates a new-record workflow.

The controls provide standard interaction points. Some resulting workflows, especially New, depend on the Forms and Page Flow behavior configured for the Page.

Use Search when users need to narrow the visible record list using matching text.

For example, a customer list can help users find a record by searching for text in the displayed information, subject to the Widget's supported search behavior.

Search is a user-interface convenience. It must not be relied on to restrict users to authorized records.

Refresh ​

Use Refresh when users need to reload a list after records may have changed.

Common situations include completing a Form, updating a record through another part of the application, or returning to a list after an operation.

If Page Flow supplies the records through Custom Query, make sure the refresh workflow uses the intended current data source and filter context.

Download ​

Download provides a CSV export of the data displayed through the Widget.

Before relying on exports for an application workflow, verify the exported columns and rows under the actual search, column visibility, and pagination configuration. Do not assume that export is limited to the current page or includes every filtered record without testing the resulting CSV.

If the table includes sensitive fields, ensure that permissions governing the data and its export are appropriate for the intended users.

Pagination ​

Previous and Next let users navigate through table pages when pagination is active.

Pagination is especially useful when a Project table contains more records than should be presented on one screen.

When records come from a Custom Query, Page Flow can provide an optional page size. Coordinate changes to filters, page navigation, and refreshing so that the Widget displays the expected slice of records.

New ​

New initiates the new-record interaction. A common implementation is to open a Form as a modal and refresh the list after a successful submission.

Configure the required Form and Page Flow coordination rather than assuming that the presence of the New control automatically defines the entire record-creation workflow.

Record and Row Actions ​

Selecting a row can expose an action menu for the associated record.

Standard actions include:

ActionPurpose
NewStarts a new-record workflow.
EditStarts a workflow to update the selected record.
RefreshReloads table data.
DeleteDeletes the selected record after confirmation.

Page Flow can customize which standard actions are available and can add custom actions that use the selected row as context.

The existence of an action does not mean every user should be permitted to perform it. Configure the available actions appropriately and enforce the corresponding data permissions.

Configuring Row Actions ​

A typical implementation workflow is:

  1. Decide which standard actions the Page should offer.
  2. Configure any Forms needed for creating or editing records.
  3. Use Page Flow where the Widget needs action visibility, modal coordination, or custom behavior.
  4. For actions on an existing record, ensure the workflow uses the intended selected-row context.
  5. For changes to records, handle the success or failure of the operation appropriately.
  6. Refresh the table when users need to see the resulting data.
  7. Preview the action with records the current user can and cannot modify, as applicable.

New and Edit ​

New creates an interaction for adding a record. Edit works with the record represented by the selected row.

Both commonly use a Form opened as a modal. Keep the Form fields and validation appropriate for the operation.

For example, an Edit Customer Form may allow users to update contact details while leaving an internal customer identifier unchanged.

Delete ​

Delete is a destructive action that requires confirmation.

When designing a deletion workflow:

  • Make it clear which record is being removed.
  • Confirm that the operation is allowed for the current user.
  • Handle failures without implying that deletion succeeded.
  • Refresh the table after a successful deletion.

Do not rely only on hiding the Delete action in the interface. Protect the underlying operation using the appropriate Database permissions or trusted Backend processing.

Custom Row Actions ​

Use a custom row action when the required operation is not one of the standard actions.

Examples include:

  • Opening the selected record's details Page.
  • Starting an approval workflow.
  • Displaying related records.
  • Changing a record's status through an authorized operation.
  • Initiating a Project-specific workflow based on the selected record.

A custom action can receive the selected row as context through the supported Page Flow integration. The Page Flow then coordinates the additional interaction or operation.

For example, an Orders table could have a View Details action that opens the Order Details Page for the selected order. If the operation requires sensitive authorization or protected business logic, coordinate with trusted Backend processing rather than enforcing those rules only in the browser.

Using Forms as Modals ​

A common use of the Data Table Widget is to open a Form when users create or edit a record.

A Form is a separate Page/Form item with its own configuration and Page Flow. The Page containing the Data Table Widget acts as the host Page and can coordinate the modal interaction.

Example: New Customer ​

A typical New workflow is:

  1. The user selects New in the Customers Data Table.
  2. The configured interaction opens a New Customer Form as a modal.
  3. The user enters and submits the required information.
  4. The Form processes the submission through its configured workflow.
  5. The host Page responds to a successful result.
  6. The Data Table refreshes to display the new record.

If validation or saving fails, the workflow should present the problem rather than report a successful update.

Example: Edit Order ​

A typical Edit workflow is:

  1. The user locates an order in the Data Table.
  2. The user opens the row action menu and selects Edit.
  3. The configured Edit Form opens with the intended order context.
  4. The user changes supported fields and submits the Form.
  5. After successful processing, the modal closes or returns a completion result according to the configured workflow.
  6. The host Page refreshes the Data Table as needed.

The exact Form and Page Flow configuration depends on whether the Form is Table-Backed or Custom and how the Project handles the data operation.

For implementation guidance, see Opening Forms as Modals and Page Flow for Forms and Widgets.

Using Custom Queries ​

Enable Custom Query when Page Flow should supply or control the set of records displayed in the Widget.

This gives the Page more control over the record list than the ordinary selected-Table display.

When a Custom Query Is Useful ​

RequirementExample
Show context-specific recordsOrders associated with the customer currently being viewed.
Apply a user-selected filterRegistrations for a selected event.
Display records relevant to a signed-in userRecords associated with that user, subject to enforced access rules.
Depend on another Page interactionChange the record list after a selection elsewhere on the Page.
Display a restricted or shaped result setShow records returned by a Project-specific data operation.

Direct Table Display vs. Custom Query ​

Direct table display uses the selected Project table through the Widget's regular data configuration. It is appropriate when the application can show that table's records without needing Page Flow to determine the record source.

Custom Query makes Page Flow responsible for providing the intended records and, where applicable, an optional page size.

Conceptually:

text
Direct Table Display
  Project Table
    -> Data Table Widget

Custom Query
  Page context or user selection
    -> Page Flow data operation
      -> Records supplied to Data Table Widget

This diagram describes the relationship between components; it is not executable query code or a specification of particular Page Flow blocks.

Configuring a Custom-Query Table ​

A typical sequence is:

  1. Add and configure the Data Table Widget, including its selected Table and display columns.
  2. Enable Custom Query.
  3. Open Page Flow for the host Page.
  4. Configure the supported data operation that retrieves the desired record set.
  5. Supply the retrieved records to the Data Table Widget through the supported Page Flow interaction.
  6. Provide an optional page size if the workflow requires one.
  7. Coordinate the query with relevant startup actions, selection changes, refreshes, or pagination behavior.
  8. Preview the table with matching records, no results, and error conditions.

Avoid treating a custom query as an authorization rule merely because it uses the signed-in user or a selected filter. Sensitive access restrictions must be enforced through the appropriate Database rules or trusted Backend operations.

Coordinating the Widget with Page Flow ​

Page Flow provides browser-side logic that can coordinate the Data Table Widget with other elements and application capabilities.

The Data Table Widget has dedicated Page Flow blocks for common runtime controls. In most cases, use those blocks instead of calling lower-level widget commands directly.

Supported patterns include:

Page Flow PatternExample Use
Show or hide standard row actionsExpose an Edit action only when it is appropriate for the current interface state.
Attach Forms to New or Edit actionsOpen a modal for entering or updating a record.
Add a custom row actionOpen details or initiate a Project-specific workflow.
Use selected-row contextAct on the record chosen by the user.
Move to the next or previous table pageCoordinate pagination with other Page controls.
Refresh the tableReload data after a successful operation.
Set the filtered record sourceUpdate the table in response to a filter or selection.

Use Page Flow when the Data Table is part of a larger workflow rather than only a record list.

Data Table Page Flow Controls ​

Common Data Table Page Flow controls include:

ControlUse It To
Data Table RefreshReload the table's displayed data after a change or workflow step.
Data Table Load Next PageMove the table to the next page of records.
Data Table Load Prev PageMove the table to the previous page of records.
Data Table Custom QueryProvide the table's record source and optional page size from Page Flow.
Data Table Action Menu CustomizeShow or hide standard row actions such as New, Edit, Refresh, and Delete.
Data Table Add ActionAdd a Project-specific custom row action.
Data Table Attach FormOpen a Form as a modal for New, Edit, or both action types.
Data Table: DataUse the selected row data inside a custom row action.
Data Table: Table NameRefer to the table associated with the current Data Table action context.

These controls are Page Flow authoring tools. They call the Data Table runtime behavior internally.

Use direct $io.ui.widgetCommand(...) calls only for advanced JavaScript scenarios where the Page Flow blocks do not fit the implementation. For exact block inputs and the underlying API, see Technical Reference.

Example: Event Registrations ​

Consider an administrative Page for managing event registrations.

The Page contains:

text
Event Registrations Page
  Event Selector
  Heading (Registrations)
  Data Table Widget (Registration List)
    Project Table: Registrations
    Custom Query: Enabled
    Display Columns: Attendee, Email, Status, Registered On

The interaction might work as follows:

  1. An administrator selects an event.
  2. Page Flow retrieves the registration records associated with that event.
  3. The result is supplied to the Data Table Widget.
  4. The administrator reviews the records and uses an available row action.
  5. An Edit action opens a registration Form as a modal.
  6. When the update succeeds, the table refreshes using the relevant event context.

This illustrates a possible application design. The specific event selector, data operation, authorization, and Form behavior must be configured in the Project.

Data Access and Security ​

A Data Table Widget is a user-interface component. It does not replace access controls on Project data.

Several distinctions are important:

MechanismWhat It Controls
Page accessWho can open the Page under its configured access restrictions.
Database access rulesWhich data operations and records are available through the permitted data interfaces.
Column visibilityWhich fields appear in the Widget layout at a given screen size.
Toolbar or action visibilityWhich controls are presented in the interface.
Custom QueryWhich records Page Flow requests or supplies for display.
Cloud FlowTrusted server-side processing when protected credentials, centrally enforced rules, or sensitive business logic are needed.

Hiding a column, action, or toolbar is not a security control. Similarly, a browser-side Custom Query must not be the sole mechanism for preventing unauthorized data access.

For sensitive applications:

  • Apply the appropriate Database access rules.
  • Use trusted Backend checks for operations requiring centrally enforced authorization or business rules.
  • Make sure New, Edit, Delete, custom actions, and data exports are appropriate for the current user.
  • Review whether the records returned to the browser contain fields that should not be exposed.
  • Test authorized and unauthorized scenarios, not only successful interactions.

For more information, see Page Settings, Database, and Cloud Flow.

Responsive Design and Usability ​

Data Tables can become difficult to use when many fields compete for horizontal space.

A practical approach is:

  1. Select the fields that users need most often.
  2. Put the most important columns first.
  3. Use Column Width % only where a specific width helps.
  4. Hide lower-priority columns for Tablet or Mobile when appropriate.
  5. Keep record identification and important status information visible.
  6. Preview long names, large numbers, dates, and other realistic values.
  7. Test row-action menus and toolbar controls at smaller widths.

Desktop ​

Desktop layouts can often accommodate more fields, but unnecessary columns still make records harder to scan. Keep the table focused on the Page's main purpose.

Tablet ​

Consider hiding supplemental fields such as internal notes or secondary metadata while preserving identifiers and information needed to make decisions.

Mobile ​

Prioritize a small number of meaningful columns and make sure users can still reach required actions. If the task depends on many fields, consider a separate detail view or Form rather than compressing all information into a narrow row.

Responsive column settings control which columns are shown. Preview and test the complete interaction rather than assuming that hiding columns automatically produces the ideal mobile layout.

Previewing and Testing ​

After configuration, save the Page and use Preview to test both appearance and behavior.

Check the following:

AreaWhat to Verify
Data sourceThe intended Project table or Custom Query supplies the expected records.
ColumnsFields, order, widths, and headings match the intended presentation.
Responsive displayImportant columns remain readable at desktop, tablet, and mobile widths.
SearchSearch produces appropriate matches for representative text values.
DownloadCSV output contains the expected records and fields for the actual table state.
PaginationPrevious and Next navigate correctly, especially with Custom Query.
New and EditThe intended Form opens and processes the correct workflow.
DeleteConfirmation, permissions, and resulting refresh behavior work as expected.
Custom actionsThe action uses the intended selected-row context.
Data changesRefresh reflects successful changes in the Project data.
AccessUsers can perform only operations allowed by the Project's access configuration.

Also test the table when no records match, when a data operation fails, and when fields contain unusually long values.

Previewing a Page is separate from publishing it. Save and test changes in development, then use Publish Project when the updated application is ready to be released.

Common Issues and Troubleshooting ​

IssueWhat to Check
The Widget shows no records.Verify the selected Table, available records, access permissions, and any Custom Query result.
A field is missing from the display.Check Select Columns to Display, the selected Data Field, and screen-specific column visibility.
The table is crowded on Mobile.Review column order, widths, and Hide on Mobile settings.
New or Edit does not open the expected Form.Check the configured Form and the related Page Flow interaction.
A custom action uses the wrong record.Check that the selected-row context is handled correctly.
The table does not reflect a recent change.Refresh the data and verify the underlying operation completed successfully.
Search or pagination behaves unexpectedly.Test the current data source, filters, query behavior, and page-navigation coordination.
CSV contents differ from expectations.Review the current displayed fields and rows, and test export with search and pagination active.
An action is visible but fails.Check the action configuration and the current user's permission to perform the operation.

When troubleshooting, distinguish a display configuration issue from a data source, Page Flow, or authorization issue. The visible table is only one part of the complete application workflow.

Choosing the Right Configuration ​

NeedRecommended Configuration
Display a straightforward record listSelect a Table and use the Widget's ordinary display behavior.
Show only important fieldsEnable Select Columns to Display.
Simplify Mobile presentationConfigure Hide on Mobile for lower-priority columns.
Provide standard search, refresh, export, pagination, and New controlsKeep the toolbar visible.
Provide custom surrounding controlsUse Hide Toolbar where appropriate and configure the replacement interactions.
Display records based on another Page selectionEnable Custom Query and coordinate the data source through Page Flow.
Create or edit records from the listConfigure the relevant Form and Page Flow interaction.
Add a Project-specific record actionConfigure a custom row action through supported Page Flow behavior.
Display records in a customized repeated visual layoutUse Data Design instead.

Good Practices ​

  • Show only relevant columns. Select fields that support the user's task rather than displaying every available Database field.
  • Name the Widget clearly. Use an identifiable element name such as Orders List or Customer Records for easier maintenance.
  • Keep useful controls accessible. Hide the toolbar only when its functions are unnecessary or provided elsewhere.
  • Use Forms for record editing. Keep New and Edit workflows focused and refresh the table after successful changes.
  • Use Custom Query when needed. Avoid extra Page Flow logic when ordinary table display is sufficient.
  • Preserve selected-row context. Custom actions should operate on the record the user actually selected.
  • Design for smaller screens. Choose column order and responsive visibility deliberately.
  • Protect the data source. Apply the appropriate access rules independently of the Widget's appearance.
  • Test with realistic data. Include large record sets, long field values, empty results, and records the user cannot modify.
  • Verify CSV output. Test downloads under the Page's actual column, search, and pagination configuration.

Technical Reference ​

For exact Data Table Page Flow block inputs and related API signatures, see the Programming Guide:

Use the Programming Guide for precise block and API details; use this product guide for workflow, concepts, and authoring guidance.

Common Mistakes ​

Avoid these patterns:

  • Using a basic Table for a large, data-backed record list that needs Widget behavior.
  • Showing every Database field when only a few are useful to the application user.
  • Hiding important record identifiers on Mobile, making rows hard to recognize.
  • Enabling Custom Query without configuring Page Flow to supply the intended records.
  • Assuming that New or Edit automatically implements the complete Form workflow.
  • Using row actions without checking the selected record and its permissions.
  • Treating hidden columns or unavailable buttons as protection for sensitive data.
  • Assuming that CSV export always has a particular pagination scope without testing.
  • Refreshing the display before a save or delete operation has actually succeeded.
  • Replacing or renaming a Widget without reviewing Page Flow references that depend on it.
  • Forgetting to test empty results, failures, and responsive behavior.

The Data Table Widget is most useful when a standard record-list interface meets the Page's needs. Configure its data source and visible columns first, then add Forms and Page Flow only where the required interactions call for them.