Actions bound to the current row
Actions can be configured with the ROWBOUND
attribute depending on
whether there is a current row.
When using a DISPLAY ARRAY
or INPUT ARRAY
dialog to control
a table view, actions can get the ROWBOUND
attribute in order to make the action only available when there
is a current row in the list.
The ROWBOUND
attribute is typically used with TABLE
and
TREE
containers, but can also by used with SCROLLGRID
and static
lists in GRID
containers (however in last case there will be no row-specific
decoration of the action views)
ROWBOUND
attribute is to have
the corresponding action enabled and disabled automatically by the runtime system, depending on the
existence of a row. The default decoration of such action is front-end platform driven and is the
consequence of using the ROWBOUND
action attribute. A DISPLAY
ARRAY
or INPUT ARRAY
can be used with a plain form that show a single row
at a time. The rowbound actions can also be used in such case, using form buttons as action views
for example. These buttons will be automatically enabled/disabled according to the list
content.In DISPLAY ARRAY
, the actions created from modification triggers ON UPDATE
and ON DELETE
are automatically defined as rowbound actions. Actions for ON
INSERT
and ON APPEND
are not considered as specific to a row.
On a mobile device, the actions defined with the ROWBOUND
attribute will be
available by selecting the three-dot button on the right of a table row. For more details, see Binding action views to a table row.
DISPLAY ARRAY
dialog implements three
actions:- The "refresh" action is not "rowbound", and will always be available (active/visible), even if the list is empty.
- The "check" action is rowbound, and will only be available if there is a (current) row in the list.
- The "delete" action created by the
ON DELETE
modification trigger is implicitly "rowbounded".
DISPLAY ARRAY a_orders TO sr.* ATTRIBUTES(UNBUFFERED)
...
ON ACTION refresh -- not rowbound
CALL fetch_orders()
ON ACTION check ATTRIBUTES(ROWBOUND)
CALL check_order(arr_curr())
ON DELETE -- implicitly rowbound
CALL delete_order(arr_curr())
...
END DISPLAY