> For the complete documentation index, see [llms.txt](https://docs.labii.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.labii.com/widgets/section-widgets/data-display/columns/columns.md).

# Columns

## Specs

| Label                     | Value                         |
| ------------------------- | ----------------------------- |
| **Version**               | 4.2.0 (updated on 2024-04-08) |
| **Developer**             | Labii Inc.                    |
| **Type**                  | Section                       |
| **Support Configuration** | Yes                           |

## Overview

The Columns widget displays structured data from a record in a compact, configurable layout inside a section. It can show the current record, a specific version of a record, or data pulled through a foreign-key column, then present selected fields as a table or as one to four visual columns. This makes the widget useful for record summaries, linked-record snapshots, and read-only reporting views that help laboratory teams review important attributes without navigating away from the current context.

## Use Cases

* **Inventory summaries**: Show key stock attributes such as lot number, quantity, storage location, and status within a record.
* **Linked record previews**: Display selected fields from a related record referenced by a foreign-key column.
* **Reporting layouts**: Present account, sample, or experiment details in a concise table or multi-column summary block.
* **Version review**: Freeze displayed values to a specific record version for audit, comparison, or signoff workflows.
* **Dashboard-style sections**: Surface the most relevant fields from a record without exposing the full editable detail view.

## Interface

### Read-only View

The read-only view shows the selected fields and their values from the configured source record. The exact appearance depends on the widget settings, especially **Display**, **Density**, and **Should minimize header**.

* **Table display**: Mirrors the organization of the record's [Columns](/user-guide/detail-view/columns.md) view, which is useful when users want a familiar field-by-field presentation.
* **1 column display**: Shows labels on the left and values on the right in a single vertical list.
* **2 columns display**: Splits the selected fields into two side-by-side columns for denser summaries.
* **3 columns display**: Arranges data across three columns when more fields must be visible at once.
* **4 columns display**: Maximizes on-screen density for compact read-only overviews.
* **Compact density**: Reduces vertical spacing so more values fit in the same area.
* **Minimized header**: Shrinks header text to reduce visual weight when labels are already familiar to users.

<figure><img src="/files/S7mGCbGuYFVC4YvOY0JV" alt=""><figcaption></figcaption></figure>

### Edit View

The Columns widget is primarily a display widget. It does not provide its own dedicated field-editing form inside the widget body. Instead, users configure what the widget shows, while actual data edits are performed in the source record or in the relevant record detail view.

* **Display-focused behavior**: Configuration determines the source, fields, and layout rather than providing inline editing controls.
* **Source-aware rendering**: The widget updates based on the selected record, version, and optional foreign-key relationship.
* **Editing workflow**: To change the underlying values, open the source record and edit the corresponding columns there.

## Configuration

Use widget configuration to control where the data comes from and how it is displayed.

### Initial Setup

{% stepper %}
{% step %}
Add the **Columns** widget to the target section.
{% endstep %}

{% step %}
Click **Configure** in the widget header.
{% endstep %}

{% step %}
Choose the data source:

* **Record**: Select a specific record to display. If no record or column is selected, the current record is used.
* **Version**: Select a record version to freeze the display. If blank, the newest version is used. When a record is signed, the newest version is assigned if none is specified.
* **Column**: Select a foreign-key column as the source. If both **Record** and **Column** are provided, the value from the record is used.
  {% endstep %}

{% step %}
Choose presentation settings:

* **Fields**: Select one or more fields to display.
* **Display**: Choose Table, 1 column, 2 columns, 3 columns, or 4 columns.
* **Density**: Choose the desired display density.
* **Should minimize header**: Enable this option to reduce header font size.
  {% endstep %}

{% step %}
Click **Save** to apply the configuration.
{% endstep %}
{% endstepper %}

### Required Settings

* **Fields**: Select the fields you want the widget to show.
* **Display**: Choose the layout that best fits the section and screen space.

### Optional Settings

* **Record**: Use a specific record instead of the current record.
* **Version**: Freeze the display to a chosen version for consistency or review.
* **Column**: Pull data through a related-record field backed by a foreign-key widget.
* **Density**: Adjust visual compactness for readability or space efficiency.
* **Should minimize header**: Reduce header prominence for cleaner summary layouts.

{% hint style="info" %}
If both **Record** and **Column** are left blank, the widget uses the current record by default.
{% endhint %}

### Common Source Patterns

{% stepper %}
{% step %}
To display data from the current record, set **Record = blank**, **Version = blank**, and **Column = blank**.
{% endstep %}

{% step %}
To display data from a specific version of a record, set **Record = value**, **Version = value**, and **Column = blank**.
{% endstep %}

{% step %}
To display data from a related record referenced by a foreign-key field, set **Record = blank**, **Version = blank**, and **Column = value**.
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
The **Column** source must use the ForeignKey widget. If the selected field is not a foreign-key column, the widget cannot resolve related record data correctly.
{% endhint %}

## Additional Functions

### Data Source Flexibility

* **Current record display**: Show selected fields from the active record without additional setup.
* **Versioned display**: Lock the widget to a specific version when historical consistency matters.
* **Related record display**: Show fields from a linked record through a foreign-key relationship.

### Layout Variations

* **Table layout**: Best for users who want a familiar record-detail presentation.
* **Multi-column summaries**: Useful when screen space is limited but several attributes must remain visible.
* **Compact presentation**: Combine dense layouts with minimized headers for concise overview sections.

### Review and Reporting Support

* **Summary cards**: Embed a quick record summary inside larger workflows or combined widgets.
* **Reference panels**: Surface important related-record values without requiring users to open the linked record.
* **Read-only snapshots**: Provide stable contextual data during review, approval, or reporting tasks.

## Best Practices

### Data Selection

* Show only the fields users need for the workflow in that section instead of mirroring the entire record.
* Group related values together so each Columns widget communicates a clear purpose, such as sample identity, storage status, or reporting details.
* Use stable, well-named columns to keep summary sections easy to interpret.

### Layout and Readability

* Use **Table** display when users benefit from the same organization as the record detail view.
* Use **1 column** or **2 columns** for readability when values are long or labels are descriptive.
* Use **3 columns** or **4 columns** only for compact summaries with short values.
* Enable **Compact density** only when the extra information density improves usability rather than making the section hard to scan.

### Governance and Accuracy

* Freeze the widget to a specific **Version** when records are being reviewed, signed, or compared historically.
* Verify that any selected foreign-key **Column** points to the intended related table before relying on the display.
* Update widget field selections when table schemas change so the section stays relevant.

{% hint style="success" %}
The most effective Columns widgets are purpose-built. Configure each one for a specific task, such as sample identification, stock status, or linked-record context, rather than trying to display everything at once.
{% endhint %}

### Common Pitfalls to Avoid

* **Avoid**: Displaying too many fields in a 3-column or 4-column layout, which makes the section difficult to read.
* **Avoid**: Assuming a related-record source will work with any field; it must be a ForeignKey column.
* **Avoid**: Leaving old field selections in place after table structure changes.
* **Instead**: Review the widget configuration whenever columns are added, renamed, archived, or repurposed.

### Maintenance and Troubleshooting

* If the widget shows unexpected data, confirm whether **Record**, **Version**, or **Column** is overriding the default source.
* If values appear outdated, check whether the widget is pinned to an older version.
* If the layout feels crowded, reduce the number of fields or switch to a less dense display mode.
