Orbeon Forms
  • Getting started
  • Installation
    • Logging
    • Configuration banner
    • Docker
    • Azure
    • Tomcat
    • WildFly
    • WebSphere
    • WebLogic
    • GlassFish
    • Caches
    • Replication
    • Upgrading
  • Configuration
    • Properties
      • General
        • HTTP client
      • Form Runner
        • Detail page
          • Attachments
          • Email properties
          • PDF
          • Table of contents
        • Persistence
        • Summary page
      • Form Builder
      • XForms
    • Advanced
      • Workflows
      • Session management
      • State handling
      • Client-side error handling
      • Clustering and High Availability
      • Configuring a Form Runner eXist database
      • Creating a production WAR
      • Environments
      • JavaScript and CSS assets
      • Limiter filter
      • Run modes
      • Security
        • Content-Security-Policy header
      • SAP Hybris Module
      • XForms logging
    • Troubleshooting
      • Troubleshooting with the orbeon.log
      • Memory and threads
      • Relational database logging
      • Misc
  • Form Builder
    • Form settings
      • Time window
    • Form editor
      • Form area
      • Toolbox
      • Buttons bar
      • Control settings
      • Dependent fields and sections
      • Validation
      • Choices editor
      • Publishing
      • Cut, copy and paste
      • Section and grid settings
      • Section settings
      • Grid settings
      • Quick control search
      • Repeat settings
      • Repeated grids
      • Undo and redo
      • Keyboard shortcuts
    • Formulas
      • Examples of formulas
      • Formulas inspector
      • Formulas console
    • Summary page
    • Form localization
    • Advanced
      • Edit source
      • Services and actions
        • HTTP services
        • Database services
        • Simple Actions
        • Action Syntax
        • Action Syntax examples
        • Synchronizing repeated content
      • Testing a form in web mode
      • Testing PDF production
      • Testing offline functionality
      • Email Settings dialog
      • Field-level encryption
      • Messages
      • Section templates
      • Template syntax
      • XML Schemas support
      • Extensibility
        • Extension API
        • Integration
        • Toolbox component metadata
  • Form Runner
    • Overview
      • Terminology
    • Pages
      • Landing page
      • Published Forms page
      • Forms Admin page
      • Summary page
    • Components
      • Alert dialog
      • Attachment
      • Autocomplete
      • Captcha
      • Character counter
      • Checkbox input
      • Currency
      • Date
      • Dropdown date
      • Static and dynamic dropdown
      • Error summary
      • Grid
      • Handwritten signature
      • Hidden field
      • Image
      • Image annotation
      • Image attachment
      • Number
      • Open selection
      • Repeater
      • Formatted Text / Rich Text Editor
      • Section
      • Single-selection tree
      • Source code editor
      • Time
      • US phone
      • US state
      • Video
      • Video attachment
      • Wizard
      • XForms inspector
      • Yes/No answer
    • Features
      • Automatic calculations dependencies
      • Datasets
      • Excel and XML import
      • Excel and XML export
      • Summary page Excel Export
      • Form definitions and form data Zip Export
      • Purging historical data
      • Lease
      • Localization
      • Supported languages
      • Mobile support
      • Multitenancy
      • Form Runner navigation bar
      • PDF production
        • Automatic PDF
        • Automatic PDF header and footer configuration
        • PDF templates
      • Responsive design
      • Revision history
      • S3 storage
      • Simple data migration
      • TIFF production
      • Versioning
      • Wizard view
      • Workflow stage
    • Persistence
      • Using a relational database
      • Relational database schema
      • Purging old data using SQL
      • Auditing
      • Autosave
      • Database support
      • Flat view
    • Linking and embedding
      • Linking
      • Java Embedding API
      • JavaScript Embedding API
      • Liferay full portlet
      • Liferay proxy portlet
      • Securing Form Runner access
      • Form Runner offline embedding API
      • Angular component
      • React component
    • Access control and permissions
      • Users
      • Login & Logout
      • Deployed forms
      • Form fields
      • Editing forms
      • Owner and group member
      • Organizations
      • Scenarios
      • Token-based permissions
    • Styling
      • CSS
      • Grids CSS
      • Automatic PDF styling and CSS
    • APIs
      • Authentication of server-side service APIs
      • Persistence API
        • CRUD API
        • Search API
        • List form data attachments API
        • Form Metadata API
        • Lease API
        • Reindexing API
        • Caching
        • Versioning
        • Revision History API
        • Zip Export API
        • Custom persistence providers
      • Other APIs
        • Connection context API
        • Duplicate form data API
        • File scan API
        • Form Runner JavaScript API
        • Generate XML Schema API
        • PDF API
        • Publish form definition API
        • Run form in the background API
      • Data formats
        • Form data
        • Date and time
        • Form definition
    • Architecture and integration
      • Architecture
      • Access form data
      • Integration
    • Advanced
      • Buttons and processes
        • Simple process syntax
        • Core actions
        • Form Runner actions
          • Save action
          • Send action
          • Email action
        • XForms actions
        • Predefined buttons, processes and dialogs
        • Summary page buttons and processes
      • Custom dialogs/model logic
      • Services
      • Singleton form
      • Monitoring HTTP requests
  • XForms
    • Core
      • Attribute Value Templates (AVTs)
      • Binds
      • Validation
      • Variables
      • Keyboard focus
      • XForms JavaScript API
      • Error handling
        • Detailed behavior
      • Model-Bind variables
      • XForms 2.0 support
    • Events
      • Standard support
      • UI refresh events
      • Keyboard events
      • Extension events
      • Extension context information
      • Other event extensions
    • Actions
      • Repeat, insert and delete
      • Scripting actions
      • Extensions
    • Controls
      • Label, hint, help
      • Input
      • Output
      • Text area
      • Button
      • Upload
      • Dialog
    • Submission
      • Standard support
      • JSON support
      • Asynchronous submissions
      • Caching extension
      • Other submission extensions
    • XPath
      • Type annotations
      • Expression analysis
      • Tips
      • Compatibility
      • Standard functions
      • Maps and arrays Functions
      • Extension functions
        • Core functions
        • Utility functions
        • Model functions
        • Controls functions
        • XML functions
        • JSON functions
        • HTTP functions
        • Form Runner functions
        • Other functions
        • Deprecated functions
    • XBL components
      • FAQ
      • Guide
        • XBL Tutorial
        • Bindings
        • XForms models
        • Including content
        • Event handling
        • Conventions
        • Map XBL example
        • Learning from existing components
      • Advanced topics
        • XBL Modes
        • JavaScript companion classes
        • XBL library
        • Extensions
        • Attachment controls
    • XForms tutorial
      • Introduction
      • Installation
      • The Hello application
      • The Bookcast application
        • The basic app
        • Database access
        • Polishing the app
        • Adding a feed
    • Using XForms from Java apps
  • XML Platform
    • Page Flow Controller
      • Basics
      • XML submission
      • Navigating between pages
      • Paths and matchers
      • Other configuration elements
      • Typical combinations of page model and page view
      • Examples
      • Authorizing pages and services
    • Processors
      • URL generator
      • Request generator
      • PDF to image converter
    • Resources
      • Resource managers
      • Setting up an external resources directory
    • Other
      • Binary and text documents
  • FAQ
    • Licensing
    • PE and Dev Support
    • Form Builder and Form Runner
    • Resources and support
    • Other technical questions
  • Contributors
    • Automated tests
    • Building Orbeon Forms
    • Localizing Orbeon Forms
    • Validation functions
    • Contributor License Agreement
  • Release notes
    • Orbeon Forms 2022.1.9
    • Orbeon Forms 2024.1.1
    • Orbeon Forms 2023.1.7
    • Orbeon Forms 2024.1
    • Orbeon Forms 2023.1.6
    • Orbeon Forms 2023.1.5
    • Orbeon Forms 2021.1.11
    • Orbeon Forms 2022.1.8
    • Orbeon Forms 2023.1.4
    • Orbeon Forms 2023.1.3
    • Orbeon Forms 2023.1.2
    • Orbeon Forms 2022.1.7
    • Orbeon Forms 2023.1.1
    • Orbeon Forms 2023.1
    • Orbeon Forms 2022.1.6
    • Orbeon Forms 2021.1.10
    • Orbeon Forms 2022.1.5
    • Orbeon Forms 2021.1.9
    • Orbeon Forms 2022.1.4
    • Orbeon Forms 2022.1.3
    • Orbeon Forms 2021.1.8
    • Orbeon Forms 2022.1.2
    • Orbeon Forms 2022.1.1
    • Orbeon Forms 2022.1
    • Orbeon Forms 2021.1.7
    • Orbeon Forms 2021.1.6
    • Orbeon Forms 2021.1.5
    • Orbeon Forms 2021.1.4
    • Orbeon Forms 2021.1.3
    • Orbeon Forms 2021.1.2
    • Orbeon Forms 2021.1.1
    • Orbeon Forms 2021.1
    • Orbeon Forms 2020.1.6
    • Orbeon Forms 2019.2.4
    • Orbeon Forms 2019.1.2
    • Orbeon Forms 2018.2.5
    • Orbeon Forms 2018.1.4
    • Orbeon Forms 2020.1.5
    • Orbeon Forms 2020.1.4
    • Orbeon Forms 2020.1.3
    • Orbeon Forms 2020.1.2
    • Orbeon Forms 2019.2.3
    • Orbeon Forms 2020.1.1
    • Orbeon Forms 2020.1
    • Orbeon Forms 2019.2.2
    • Orbeon Forms 2019.2.1
    • Orbeon Forms 2019.1.1
    • Orbeon Forms 2019.2
    • Orbeon Forms 2019.1
    • Orbeon Forms 2018.2.4
  • Release history
  • Use cases
  • Product roadmap
  • Index of features
Powered by GitBook
On this page
  • What it does
  • Appearance
  • Full repeat appearance
  • Minimal repeat appearance
  • Basic usage
  • Format of rows and cells
  • Non-repeated mode
  • Repeated mode
  • Data format
  • Relevance and readonly behavior
  • Events
  • See also
  1. Form Runner
  2. Components

Grid

What it does

The fr:grid component organizes contained controls in a grid of rows and columns. Features:

  • configurable number of rows and columns

  • optional repetition of its content

    • configurable min/max number of iterations

    • can repeat over several heterogeneous rows

    • built-in icons and menus to add, remove, and move repeated rows

    • supports relevant and readonly MIPs [SINCE Orbeon Forms 4.8]

Appearance

Full repeat appearance

Menu

A menu is available to perform operations on or around a line. Not all operations are always available, depending on the position of the line or the freeze setting. When the entire grid is made readonly, the menu is not present.

  • Insert Above

    • When allowed, insert a new repetition above the current one.

  • Insert Below

    • When allowed, insert a new repetition below the current one.

  • Move Up

    • When allowed, move the current repetition one level above.

  • Move Down

    • When allowed, move the current repetition one level below.

  • Clear Line

    • [SINCE Orbeon Forms 2019.2]

    • Clear or reset all the values in the current repetition.

  • Remove Line

    • When allowed, remove the current repetition.

Single-line

Multi-line

Minimal repeat appearance

[SINCE Orbeon Forms 2016.1]

Basic usage

Format of rows and cells

Starting Orbeon Forms 2017.2

With Orbeon Forms 2017.2 and newer, the format for grid rows and cells produced by Form Builder has changed. Instead of using <xh:tr> and <xh:td>, it uses <fr:c>. <xh:tr> and <xh:td> are still supported for backward compatibility.

The following attributes are supported on <fr:c>:

  • x:

    • x position

    • required

    • minimum: 1

    • maximum: 12

  • y:

    • y position

    • required

    • minimum: 1

    • maximum: none

  • w:

    • width of the cell

    • required

    • minimum: 1

    • maximum: 12

  • h:

    • height of the cell

    • optional, defaults to 1

    • minimum: 1

    • maximum: none

The following must hold:

  • cells must not overlap

  • cells must not extend beyond column 12

In other words, the grid must be well-formed.

However, the grid may have holes, and not all cells need be present.

Until Orbeon Forms 2017.1

<xh:tr> and <xh:td> are used to indicate rows and cells, following the HTML tables <tr> and <td> scheme.

The following attributes are supported on <xh:td>:

  • rowspan

    • optional, defaults to 1

    • as in HTML

    • supported in Form Builder

  • colspan

    • optional, defaults to 1

    • as in HTML

    • NOT supported in Form Builder

Non-repeated mode

General information

Attributes:

  • id: optional grid id. Form Builder always places an id.

  • repeat: can be optionally set to false

NOTE: In the future bind and ref should be supported.

Starting Orbeon Forms 2017.2

<fr:grid id="note-grid">
    <fr:c y="1" x="1" w="12">
        <!-- A form control will be placed here -->
    </fr:c>
</fr:grid>

Example with multiple cells spanning rows and columns:

<fr:grid id="grid-1-grid">
    <fr:c y="1" x="1" w="6">
        <!-- A form control will be placed here -->
    </fr:c>
    <fr:c y="1" x="7" w="6" h="2">
        <!-- A form control will be placed here -->
    </fr:c>
    <fr:c x="1" y="2" w="3">
        <!-- A form control will be placed here -->
    </fr:c>
    <fr:c x="4" y="2" w="3">
        <!-- A form control will be placed here -->
    </fr:c>
</fr:grid>

Until Orbeon Forms 2017.1

<fr:grid id="note-grid">
    <xh:tr>
        <xh:td>
            <!-- A form control will be placed here -->
        </xh:td>
    </xh:tr>
</fr:grid>

Repeated mode

General information

Attributes:

  • id: optional grid id.

  • repeat

    • true: legacy repeat mode

    • content: new repeat mode with an enclosing element [SINCE Orbeon Forms 4.8]

  • bind or ref

    • with repeat="content": single item binding which binds to the enclosing element

    • with repeat="true": item sequence binding which binds to the repeated elements

  • template

    • XML data template used to insert new data when iterations are inserted

    • optional when the grid is readonly

  • min and max

    • minimum vs. maximum number of repeat iterations supported

    • can be an AVT

    • evaluation context

      • with repeat="content": context of the binding (bind or ref)

      • with repeat="true" (deprecated): context of the fr:grid element

    • are checked when the user attempts to add/remove iterations with the UI

    • max can also take the explicit value none

  • remove-constraint

    • optional XPath expression

    • evaluation context

      • context of the iteration item

    • if the constraint returns false(), the current row cannot be removed

  • clear-constraint

    • [SINCE Orbeon Forms 2022.1]

    • optional XPath expression

    • evaluation context

      • context of the iteration item

    • if the constraint returns false(), the "Clear Line" menu item is disabled

  • freeze

    • optional number of rows at the top which cannot be removed or moved

    • can be an AVT [SINCE Orbeon Forms 2016.3]

    • evaluation context

      • with repeat="content": context of the binding (bind or ref)

      • with repeat="true": context of the fr:grid element

  • readonly

    • force the grid to be readonly when set to true

    • this cannot be an AVT

  • apply-defaults [SINCE Orbeon Forms 2016.1]

    • true: dynamic initial values (via the xxf:default MIP) apply to new iterations

    • missing or `false: dynamic initial values do not apply to new iterations

    • can be an AVT

  • appearance [SINCE Orbeon Forms 2016.1]

    • full

      • the default appearance, as with Orbeon Forms 4.10 and earlier

      • row menu

        • reordering of rows

        • insertion of rows at specific points

        • removing of specific rows

    • minimal

      • does not show the "+" button at the top left

      • does not show the row menu and associated features

      • instead just provides "Add another" and "Remove" links at the bottom

  • insert [SINCE Orbeon Forms 2016.2]

    • index

      • the "Add Another" or "+" button adds a new repetition after the iteration currently with keyboard focus

      • this is the default in full appearance

    • bottom

      • the "Add Another" or "+" button adds a new repetition after the last iteration

      • this is the default in minimal appearance

Starting Orbeon Forms 2017.2

<fr:grid
    id="note-grid"
    repeat="content"
    bind="note-bind"
    template="instance('note-template')"
    min="0">
    <fr:c y="1" x="1" w="12">
        <!-- A form control will be placed here -->
    </fr:c>
</fr:grid>

Until Orbeon Forms 2017.1

<fr:grid
    id="note-grid"
    repeat="content"
    bind="note-bind"
    template="instance('note-template')"
    min="0">
    <xh:tr>
        <xh:td>
            <!-- A form control will be placed here -->
        </xh:td>
    </xh:tr>
</fr:grid>

Data format

With repeat="content":

  • An enclosing element is present.

  • Nested elements, typically suffixed with -iteration, enclose each repetition.

<note>
    <note-iteration>
        <note-text/>
    </note-iteration>
    <note-iteration>
        <note-text/>
    </note-iteration>
</note>

With legacy repeat="true":

  • No enclosing element is present.

  • Elements are repeated at the top-level.

<note>
    <note-text/>
</note>
<note>
    <note-text/>
</note>

A template instance contains the XML data to insert for a new iteration:

<xf:instance id="note-template">
    <note-iteration xmlns="">
        <note-text/>
    </note-iteration>
</xf:instance>

Relevance and readonly behavior

With repeat="content":

  • if the bound item is non-relevant, the grid is entirely hidden

  • if the bound item is readonly, the grid is entirely readonly and menus and icons don't show

In either case, fr:grid contains the rows to repeat as xh:tr. Each xh:tr contains xh:td cells as needed.

Events

[SINCE Orbeon Forms 2016.1]

The following events are dispatched to the fr:grid element:

Event name
Description

fr-iteration-added

Dispatched when the user has just added an iteration

fr-iteration-removed

Dispatched when the user has just removed an iteration

These events are not dispatched if the number of iterations changes by other means, for examle if the data is replaced, or inserts/deletes happen outside of the component.

[SINCE Orbeon Forms 2018.2]

Both events take an index context information:

  • event('index') as xs:integer: the index of the row added or removed

See also

PreviousError summaryNextHandwritten signature

Last updated 2 years ago

see also:

Example of use outside of Form Runner:

Section component
Form data format
Form Builder: Repeated Grids
gist
Evaluation of initial values upon insert
Evaluation of initial values upon insert
Repeated grid menu
Full appearance / single-line
Full appearance / multi-line
Minimal appearance / single-line
Minimal appearance / multi-line