Search This Blog

Sunday, December 21, 2025

ADDING FIELDS TO THE APPLICATION

 In Oracle APEX, “adding fields to the application” is really two related activities that must stay in sync:

Adding (or exposing) the data attribute in your data layer (a table column, a view column, a REST attribute, or a PL/SQL record field).

Adding (or updating) the APEX UI and logic that reads/writes that attribute (page items, region columns, validations, processes, computations, and any downstream integrations).

A key idea to internalize is that APEX does not store your business data in page items. Page items are a UI/state mechanism. The “field” you add becomes durable only when it is persisted (typically to a table) by a DML process such as Automatic Row Processing (DML), an Interactive Grid DML handler, or your own PL/SQL code.

When people get stuck, it is usually because they add the column in the database but do not update the APEX region/page item sources and DML processes, or they add UI items without ensuring the data source and DML layer know what to do with the new attribute.

The most common places you “add fields” in APEX are:

A form page (Form region + page items + Automatic Row Processing).

An Interactive Grid (region columns + DML settings).

A report (Classic Report / Interactive Report / Cards) where you expose the column for display and filtering.

A data source that is not a table (views, REST Data Sources, PL/SQL function returning SQL query), where you must explicitly expose the attribute in the query and map it into UI items.

A practical way to approach this is to treat each new field as a small lifecycle: define → expose → validate → persist → secure → test → deploy.

Start by being explicit about what kind of “field” you are adding:

A persisted attribute: it needs a database column (or an attribute in a REST backend) and a DML pathway.

A derived attribute: it is computed from other data, may not be stored, and often should be calculated in SQL, a view, or a virtual column rather than saved.

A transient attribute: used for UI-only behavior (search terms, checkboxes, switches). It may never be stored and often lives only in session state.

If your target is a standard APEX table-backed form, the fastest and most reliable path is: add the column in the table, then let APEX generate or add the corresponding page item and wire it into Automatic Row Processing.

Example of adding a new database column, then adding it to a form page

Assume you have a table used by a form page:

CREATE TABLE customers (

  customer_id   NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  customer_name VARCHAR2(200) NOT NULL,

  email         VARCHAR2(320),

  created_on    DATE DEFAULT SYSDATE NOT NULL

);

You want to add a new field, phone_number, and capture it in the application.

Step 1: Add the column to the database

ALTER TABLE customers

  ADD (phone_number VARCHAR2(30));

If you need constraints (recommended whenever the business rules are stable), add them now so the database enforces the rule even outside APEX:

ALTER TABLE customers

  ADD CONSTRAINT customers_phone_chk

  CHECK (phone_number IS NULL OR REGEXP_LIKE(phone_number, '^[0-9+(). -]{7,30}$'));

Step 2: Ensure your form’s source query includes the new column

If your form region is based on the table directly (typical “Form” region), APEX already knows the table structure. If your form region is based on a SQL query or a view, you must include the column:

SELECT

  customer_id,

  customer_name,

  email,

  phone_number,

  created_on

FROM customers

WHERE customer_id = :P10_CUSTOMER_ID;

If you forget this step for query-based forms, the UI item may exist but never populate (because it is not selected), and/or never save (because the DML mapping cannot see it).

Step 3: Add the page item and map it to the column

In Page Designer on the form page:

Confirm the Form region’s source is the CUSTOMERS table (or your query includes PHONE_NUMBER).

Add an item for the column. In APEX, you can:

Use the form region’s capability to add a new item (often exposed as “Add Field” or “Create Item” for missing columns), or

Create a new page item manually and set its Source.

For a manual item, you would create P10_PHONE_NUMBER and configure:

Type: Text Field (or Tel, depending on your UI preference).

Source:

Type: Database Column

Column: PHONE_NUMBER

Session State:

Ensure “Maintain Session State” is enabled (default for most items).

Step 4: Ensure the page has a DML process that includes the new item

On classic APEX forms, you typically have:

Process: Automatic Row Processing (DML)

Associated with the Form region

“Items to Submit” includes the relevant items (APEX often manages this automatically when items are correctly sourced to columns, but you must verify if you have custom processes).

If you are using Automatic Row Processing, and the item source is correctly set to PHONE_NUMBER, the DML process will update that column without you writing SQL.

If you are using your own PL/SQL process instead of ARP, you must update it:

UPDATE customers

   SET customer_name = :P10_CUSTOMER_NAME,

       email         = :P10_EMAIL,

       phone_number  = :P10_PHONE_NUMBER

 WHERE customer_id   = :P10_CUSTOMER_ID;

And for inserts:

INSERT INTO customers (customer_name, email, phone_number)

VALUES (:P10_CUSTOMER_NAME, :P10_EMAIL, :P10_PHONE_NUMBER)

RETURNING customer_id INTO :P10_CUSTOMER_ID;

Step 5: Add validations where they belong

Use a layered strategy:

Database constraints for invariants (format rules, NOT NULL, foreign keys, uniqueness).

APEX validations for user-friendly messaging and UI flow.

Example APEX validation approach:

Validation type: PL/SQL Expression

Expression:

:P10_PHONE_NUMBER IS NULL

OR REGEXP_LIKE(:P10_PHONE_NUMBER, '^[0-9+(). -]{7,30}$')

Error message: “Enter a valid phone number (7–30 characters; digits and + ( ) . - allowed).”

Validation scope: “Page and Column” is fine for forms; if you want it to run only when the item is not null, include that logic as shown.

Step 6: Decide how it displays and behaves

Common enhancements:

Format mask: usually not ideal for phone numbers globally; better to store normalized digits plus country code, then format on display.

Help text: explain expectations (“Include country code for non-US numbers.”).

Conditional display: show only for certain customer types.

Read-only rules: make it read-only after verification, etc.

Example: make it required only for certain cases using Server-side Condition + Validation:

Condition: :P10_CUSTOMER_TYPE = 'BUSINESS'

Validation: :P10_PHONE_NUMBER IS NOT NULL

Adding fields to an Interactive Grid (IG)

IGs are column-driven. Adding a new database column does not automatically show up until you add/configure the grid column.

Step 1: Add the database column

ALTER TABLE customers ADD (phone_number VARCHAR2(30));

Step 2: Confirm the grid query includes the column

If the IG is “Table” based, APEX can usually see it. If it is based on a custom SQL query, add the column:

SELECT customer_id, customer_name, email, phone_number

FROM customers

Step 3: Add the IG column in Page Designer

In Page Designer:

Select the IG region.

Under Columns:

Create a new column for PHONE_NUMBER (or refresh/add columns from the query, depending on how the IG was created).

Configure:

Type: Text Field

Heading: Phone

Read Only: No (if you want editable)

Validation: as needed

Step 4: Ensure IG DML knows about it

For table-based IGs with APEX-managed DML:

Verify the IG is editable and has Primary Key configured (often CUSTOMER_ID).

Make sure the PHONE_NUMBER column is not marked “Query Only” if you want edits to persist.

If you use custom DML (PL/SQL), update your handler to include the new column.

Adding fields to a report (Classic Report / Interactive Report)

A report field is primarily a SELECT-list attribute plus column configuration.

Step 1: Add/Expose the column in the SQL query or underlying view

SELECT customer_id, customer_name, email, phone_number

FROM customers

Step 2: Add the column to the report attributes

Classic Report: add the column in the query and then configure the column display attributes.

Interactive Report: add it in the query; then it becomes available as a column that users can show/hide, filter, and sort (subject to authorization and column settings).

Step 3: Secure it if needed

If PHONE_NUMBER is sensitive, you may:

Restrict the column with Authorization Scheme (so it does not render for unauthorized users).

Mask it in SQL for unauthorized users:

SELECT

  customer_id,

  customer_name,

  email,

  CASE

    WHEN apex_authorization.is_authorized('CAN_VIEW_PHONE') = 1

    THEN phone_number

    ELSE '***-***-****'

  END AS phone_number

FROM customers

Adding fields when your data source is not a table

This is where many APEX applications become “mysteriously” out of sync because developers assume APEX will discover the new attribute automatically.

If your region source is:

A view: add the column to the view definition.

A SQL query: add the column to the SELECT list and ensure the alias matches what the UI expects.

A REST Data Source: add the attribute in the REST Data Source definition and map it to columns/items.

A PL/SQL function returning SQL query: update the SQL string returned.

Example: view-backed form

CREATE OR REPLACE VIEW v_customers AS

SELECT customer_id, customer_name, email, phone_number

FROM customers;

If your form is based on V_CUSTOMERS, you must alter the view to include PHONE_NUMBER (and ensure the DML layer can update the base table, typically via INSTEAD OF triggers or switching the form to table-based DML). In many cases, the best practice is: use the view for reporting and the table for editing, unless you have a clear update strategy.

Example: REST Data Source attribute

Add the new JSON attribute (for example phoneNumber) to the REST Data Source profile.

Map it to a column/item.

Ensure your POST/PATCH operation includes it when sending updates.

Handling “Add Field” in terms of APEX metadata and session state

Every page item is metadata that APEX stores and uses to generate runtime behavior. The item’s “Source” determines how it is populated (for example from a database column), and “Session State” determines whether its value is retained across page requests.

Practical implications:

If an item is not submitted, its value may never reach your DML process. Ensure the relevant items are submitted on save. APEX’s standard Form + ARP patterns handle this well when items are correctly configured.

If you use Dynamic Actions with “Set Value” or JavaScript updates, you may need to ensure the item is submitted (or explicitly sent via AJAX) before DML executes.

If you compute a derived value (for example, normalize the phone number), decide whether to do it:

In the database (preferred for consistency), or

In an APEX process (acceptable if you standardize it and test it thoroughly).

Example normalization before save (APEX process “Before Submit”)

IF :P10_PHONE_NUMBER IS NOT NULL THEN

  :P10_PHONE_NUMBER := REGEXP_REPLACE(:P10_PHONE_NUMBER, '[^0-9+]', '');

END IF;

Adding fields safely across DEV/UAT/PROD

Because “adding a field” often includes both database DDL and APEX metadata changes, treat it as a coordinated deployment:

Database change script (DDL): ALTER TABLE ... ADD ...

APEX app export/import (or deployment package) including page item/region changes

Post-deploy verification:

Can the page render without errors?

Can you create and update a record and see the value persisted?

Does security/authorization behave as expected?

Do reports/IGs show the column correctly?

Common failure patterns and how to avoid them

Column exists in DB, but item is blank: your form/report query does not select the column, or the item source is not mapped to the column.

Item shows value, but save does nothing: the DML layer does not include the item (custom DML not updated, IG column is query-only, or item not submitted).

Works in DEV but fails in UAT/PROD: database DDL not deployed, or view/trigger/package dependencies differ.

Validations inconsistent: only APEX validations exist, but API loads bypass APEX; add database constraints for core rules.

Performance degradation: adding many new fields to large reports increases data transfer and rendering. Only select columns you need for the page, and consider lazy-loading or drill-down patterns for “detail” attributes.

A compact checklist you can reuse for every new field

Add or expose the attribute in the data source (table/view/query/REST).

Add the field to the UI (page item or region column) and map its Source.

Ensure the DML path persists it (ARP/IG DML/custom PL/SQL).

Add validations (DB constraints for invariants; APEX validations for UX).

Apply security (authorization, masking, read-only rules).

Test create/update/reporting end-to-end.

Deploy database + APEX metadata together, then re-test.

 

 

Manual example for adding fields in the Page

1.      Right click on “Body”

2.      Select “Create region”


Next:

1.      Drag a “text Field”

2.      …Into the “Region Body”


Now you should see your new control in two places (on the left and the right), both represents the same region. FYI: regions are somewhat synonymous to “DIV” in an HTML web page.



HOW DO I USE DISPLAY-BASED ITEMS IN ORACLE APEX

 In Oracle APEX, Display-Based Items are items that are used to display information to the user, rather than accepting user input. These items are typically used for presenting data or static content on a page without allowing the user to modify it. While they don’t require user input, they can dynamically display content based on certain conditions or database values.

Display-based items can be used to show read-only data, system-generated content, or status indicators, and they are often used to enhance the presentation of an APEX application by making data easier to read and understand.

Types of Display-Based Items

  1. Display Only Items:
    • Display Only items are the most basic type of display-based item in APEX. These items are used to show data that can’t be modified by the user but can be dynamically populated from the database or other sources.
    • Typically, these items are used for displaying information like names, dates, or calculated fields.
    • Example Use Case: Displaying a customer’s full name, product price, or a dynamically calculated field like "Total Order Cost".
  2. Image:
    • The Image item type in APEX allows the application to display an image that is either stored in the database or referenced by a URL.
    • Example Use Case: Displaying a profile image or a company logo on the page.
  3. Progress Bar:
    • The Progress Bar item type can be used to show the progress of a certain process, such as a file upload or a task being completed. The progress can be dynamically updated based on the application's state or through JavaScript.
    • Example Use Case: Showing the progress of a long-running process like data import or report generation.
  4. Chart:
    • The Chart item type is used to display visual representations of data, such as bar charts, pie charts, line graphs, etc.
    • A chart item is typically used to display aggregated or summary data in a graphical format, making it easier for users to understand trends or comparisons.
    • Example Use Case: Displaying sales trends, customer demographics, or performance metrics.
  5. Text:
    • The Text item type is used for displaying static text or HTML content on the page. It can be used to show simple messages, descriptions, or formatted text.
    • Example Use Case: Displaying a description of a product, a welcome message, or an instruction on how to fill out a form.
  6. Link:
    • A Link item in APEX allows you to display a clickable link that can redirect users to another page or URL. This item is commonly used for navigation or to provide external links.
    • Example Use Case: A "Go to Homepage" link or a "View More Details" link to navigate to a related page.
  7. Spacer:
    • The Spacer item is used for adding empty space between other items on the page. It’s not directly visible to users but is useful for creating visual separation between sections of the page.
    • Example Use Case: Adding space between a title and a chart, or between two groups of form fields.

Key Properties of Display-Based Items

  1. Source:
    • Display-based items can have their values populated dynamically from the database or another source, such as a computed value, session state, or a fixed value.
    • This can be controlled through the Source property of the item, which allows you to specify where the data will come from (e.g., a SQL query, a PL/SQL function, or a static value).
  2. Visible:
    • The Visible property determines whether the display-based item is shown or hidden on the page. You can use dynamic actions, conditions, or page logic to control the visibility of these items based on user input, session variables, or other conditions.
  3. Read-Only:
    • By default, display-based items are read-only because they are not meant to accept input from users. However, you can configure certain display items to allow editing if needed (though this is not typical for pure display items).
  4. Format:
    • Many display-based items, such as Text and Display Only, allow you to format the content using HTML, CSS, or APEX's formatting options. This helps make the displayed data more readable or visually appealing.
  5. Style:
    • You can apply custom CSS styles to display-based items to control the font, color, alignment, and other aspects of their presentation. For example, you can use CSS to make a Text item bold, change the background color, or add padding around an Image item.

Benefits of Display-Based Items

  1. Presentation of Data:
    • Display-based items help present data in a more user-friendly manner, allowing the user to easily view important information without needing to edit it. This is useful for read-only displays, summaries, or calculations.
  2. Improved User Experience:
    • By separating the data entry elements from the read-only display elements, you can make your APEX applications easier to navigate. Displaying information in a structured and visually appealing manner helps users focus on the data without distractions.
  3. Dynamic Content:
    • Display-based items can be dynamically updated to reflect changes in the database or application logic. For instance, you can show progress, status updates, or change the content based on user selections or interactions.
  4. Visual Enhancements:
    • Items like Charts, Progress Bars, and Images enhance the visual appeal of your APEX application, making it more engaging for users.
  5. Conditional Display:
    • You can control the visibility of display-based items using conditions and dynamic actions. This is particularly useful when displaying data only when certain conditions are met, improving the relevance of the displayed information.

Use Cases for Display-Based Items

  1. Customer Profile Page:
    • On a customer profile page, display-based items can be used to show user details such as the name, email, address, and profile picture. These are displayed in a user-friendly manner without requiring user input.
  2. Data Summary:
    • Use display-based items to show a summary of key metrics or aggregated data. For example, showing the total sales for a period or the number of items in inventory on a dashboard.
  3. Status Indicators:
    • Display-based items such as progress bars or color-coded status indicators can be used to represent the progress of a long-running process, such as file uploads or report generation.
  4. Instructions or Information:
    • Displaying instructions or information to users, such as "Please review your selections before submitting" or "This is a read-only field."
  5. Report and Dashboard Visualizations:
    • Use charts or progress bars to visualize data in reports or dashboards. This allows users to interpret large datasets more easily by providing a visual representation.

Display-Based Items in Oracle APEX are essential components that allow you to present data in a read-only, visually appealing way. They are not meant to receive user input, but instead, to display important information, system statuses, or visual elements like charts and images. These items help enhance user experience by presenting data in a dynamic, structured format that can be tailored to the specific needs of the application, whether through images, progress bars, or static text.

By using display-based items strategically, developers can create more engaging and intuitive applications, with clear, concise presentations of critical data and status indicators.

HOW DO I USE MULTI-VALUE LIST ITEMS IN ORACLE APEX

 In Oracle APEX, Multi-Value List Items allow users to select multiple values from a list of options. These types of items are particularly useful when you want to allow users to choose more than one value from a predefined set of options, and the selected values will be submitted together when the form is submitted.

Multi-Value List Items can be implemented using different types of items, such as Multi-Select Lists or Checkbox Groups. These items are often used in situations where a user might need to choose multiple categories, features, or other attributes that can apply simultaneously.

Key Features of Multi-Value List Items

  1. Multiple Selections:
    • Unlike single-value list items (like a drop-down list or radio buttons), multi-value list items allow users to select more than one value at a time.
  2. Flexible Data Input:
    • These items provide flexibility in user input, allowing the submission of multiple values that can be stored in the database, often in a comma-separated format or using a collection.
  3. Use Cases:
    • Multi-value list items are useful in scenarios such as selecting multiple categories, features, roles, or interests. Examples include selecting multiple product features in an online form, or multiple departments in a work-related application.

Types of Multi-Value List Items

  1. Multi-Select List:
    • A Multi-Select List is a list where users can select more than one value by holding down the Ctrl (or Cmd on macOS) key (in most browsers) while clicking options. Alternatively, a user can select multiple values by dragging to select a range of options.
    • This item is implemented as a select list but with a special property enabled to allow multiple selections.
    • Example: A user selects multiple skills (e.g., "Java," "SQL," "PL/SQL") in a job application form.
  2. Checkbox Group:
    • A Checkbox Group displays multiple checkboxes where each checkbox corresponds to a specific value. Users can select multiple checkboxes to select multiple options.
    • The selected values are typically returned as a list of values, often in the form of a comma-separated list.
    • Example: A user selecting multiple interests, such as "Sports," "Music," and "Travel."
  3. Shuttle Item:
    • A Shuttle Item is a user interface element that allows users to select multiple items from a list of available options and move them into a "selected" list (usually via buttons). This is useful when there are two lists of options (available and selected), and users can transfer items between them.
    • Example: A user selecting multiple teams to assign to a project from a list of available teams.
  4. Multi-Value Select List:
    • Similar to the multi-select list, but this type uses a multi-select dropdown interface (where users can scroll through and select multiple items from the dropdown) and allows for more compact presentation.

Properties of Multi-Value List Items

  1. List of Values (LOV):
    • As with other list-based items, a multi-value list item requires a List of Values (LOV), which defines the options available for selection. In the case of multi-value list items, the user can choose multiple options from this list.
  2. Separator:
    • The selected values in a multi-value list are typically returned as a single string, often separated by a delimiter (commas, semicolons, etc.). Developers can specify the separator in the separator property to control how the selected values are stored or transmitted.
  3. Default Value:
    • A default value can be specified for the multi-value list item. This can be helpful for pre-selecting options based on previous data, user preferences, or predefined settings.
  4. Required:
    • Multi-value list items can also be marked as required, meaning the user must select at least one value before submitting the form.
  5. Validation:
    • You can set up validation rules for multi-value list items to ensure that the user’s selections meet certain criteria (such as a maximum number of selections or a minimum number of selections).

Advantages of Multi-Value List Items

  1. User Flexibility:
    • Multi-value list items provide users with flexibility, allowing them to select multiple options at once, which is important in many scenarios like survey forms, preference settings, or categorization tasks.
  2. Compactness:
    • A multi-select list (or checkbox group) allows users to select multiple options within a compact space without overwhelming the user with too many options at once. This is more efficient than using separate fields for each possible selection.
  3. Data Submission:
    • Multi-value items allow for cleaner, more efficient data submission. Instead of requiring multiple fields for each potential value, multi-value list items let the user select multiple options within a single input field. The selected values are sent as a list, which can be easily processed.
  4. Reduced Form Complexity:
    • With multi-value list items, you can reduce the number of fields on the form, which enhances user experience and simplifies the design of the page.

Disadvantages of Multi-Value List Items

  1. Potential for User Error:
    • Since multiple values can be selected, there is the potential for users to make errors by selecting too many or too few options. This may lead to validation issues, especially if not handled correctly.
  2. Performance Concerns:
    • If a multi-value list is populated with a large number of items, it could impact performance, especially in terms of page load times and responsiveness. This is something to consider for forms with hundreds or thousands of possible options.
  3. Complicated Validation:
    • Validating multi-value inputs can be more complex compared to single-value inputs, especially when you need to ensure that selections meet certain conditions (e.g., at least one option is selected, or no more than a specific number of options are selected).

Comparison of Multi-Value List Items

Feature

Multi-Select List

Checkbox Group

Shuttle Item

Multi-Value Select List

Selection Type

Multiple values selected using Ctrl or Shift keys

Multiple checkboxes can be selected

Transfer items between available and selected lists

Multiple values can be selected in a dropdown

Data Format

Comma-separated list of selected values

Comma-separated list of selected values

List of selected items

Comma-separated list of selected values

UI

Single dropdown with multi-selection

Multiple checkboxes displayed in a group

Two lists (available and selected) with buttons to transfer

Dropdown with the ability to select multiple items

Ease of Use

Easy to use for compact forms

Intuitive for selecting multiple options

Useful for long lists of options

Compact dropdown interface for multiple selections

Validation

Can be validated for a minimum/maximum number of selections

Can be validated for a minimum/maximum number of selections

Custom validation for selected items

Can be validated for a minimum/maximum number of selections

Use Case

Selecting multiple items from a list (e.g., tags)

Selecting multiple categories, features, or interests

Assigning users or items to groups or projects

Selecting multiple attributes or filters in a compact form

Use Cases for Multi-Value List Items

  1. Survey or Feedback Forms:
    • A user selects multiple preferences or feedback options, such as choosing interests or rating multiple features in a product survey.
  2. Category or Feature Selection:
    • When creating a form where users need to select multiple categories or features, such as choosing product features, service options, or project roles.
  3. Role Assignment:
    • A system that requires multiple role assignments to a user or task (e.g., selecting multiple project teams, department memberships, or permissions).
  4. User Preferences:
    • Allowing users to select their preferred options from a list of predefined choices, such as notification preferences, topics of interest, or language selection.
  5. Search Filters:
    • For filtering search results where users can select multiple filters or attributes (e.g., selecting multiple product categories or price ranges).

Multi-Value List Items in Oracle APEX provide a powerful, flexible solution for allowing users to select multiple options within a form. These items are particularly useful in scenarios where users need to select multiple attributes, categories, or filters in a single form. Whether you're using a multi-select list, checkbox group, shuttle item, or multi-value select list, the ability to select multiple options at once improves the user experience and can simplify data entry and submission. However, developers must carefully manage validation, data handling, and performance concerns to ensure a smooth user experience.

HOW DO I USE MULTI-VALUE LIST ITEMS IN ORACLE APEX

 In Oracle APEX, Multi-Value List Items allow users to select multiple values from a list of options. These types of items are particularly useful when you want to allow users to choose more than one value from a predefined set of options, and the selected values will be submitted together when the form is submitted.

Multi-Value List Items can be implemented using different types of items, such as Multi-Select Lists or Checkbox Groups. These items are often used in situations where a user might need to choose multiple categories, features, or other attributes that can apply simultaneously.

Key Features of Multi-Value List Items

  1. Multiple Selections:
    • Unlike single-value list items (like a drop-down list or radio buttons), multi-value list items allow users to select more than one value at a time.
  2. Flexible Data Input:
    • These items provide flexibility in user input, allowing the submission of multiple values that can be stored in the database, often in a comma-separated format or using a collection.
  3. Use Cases:
    • Multi-value list items are useful in scenarios such as selecting multiple categories, features, roles, or interests. Examples include selecting multiple product features in an online form, or multiple departments in a work-related application.

Types of Multi-Value List Items

  1. Multi-Select List:
    • A Multi-Select List is a list where users can select more than one value by holding down the Ctrl (or Cmd on macOS) key (in most browsers) while clicking options. Alternatively, a user can select multiple values by dragging to select a range of options.
    • This item is implemented as a select list but with a special property enabled to allow multiple selections.
    • Example: A user selects multiple skills (e.g., "Java," "SQL," "PL/SQL") in a job application form.
  2. Checkbox Group:
    • A Checkbox Group displays multiple checkboxes where each checkbox corresponds to a specific value. Users can select multiple checkboxes to select multiple options.
    • The selected values are typically returned as a list of values, often in the form of a comma-separated list.
    • Example: A user selecting multiple interests, such as "Sports," "Music," and "Travel."
  3. Shuttle Item:
    • A Shuttle Item is a user interface element that allows users to select multiple items from a list of available options and move them into a "selected" list (usually via buttons). This is useful when there are two lists of options (available and selected), and users can transfer items between them.
    • Example: A user selecting multiple teams to assign to a project from a list of available teams.
  4. Multi-Value Select List:
    • Similar to the multi-select list, but this type uses a multi-select dropdown interface (where users can scroll through and select multiple items from the dropdown) and allows for more compact presentation.

Properties of Multi-Value List Items

  1. List of Values (LOV):
    • As with other list-based items, a multi-value list item requires a List of Values (LOV), which defines the options available for selection. In the case of multi-value list items, the user can choose multiple options from this list.
  2. Separator:
    • The selected values in a multi-value list are typically returned as a single string, often separated by a delimiter (commas, semicolons, etc.). Developers can specify the separator in the separator property to control how the selected values are stored or transmitted.
  3. Default Value:
    • A default value can be specified for the multi-value list item. This can be helpful for pre-selecting options based on previous data, user preferences, or predefined settings.
  4. Required:
    • Multi-value list items can also be marked as required, meaning the user must select at least one value before submitting the form.
  5. Validation:
    • You can set up validation rules for multi-value list items to ensure that the user’s selections meet certain criteria (such as a maximum number of selections or a minimum number of selections).

Advantages of Multi-Value List Items

  1. User Flexibility:
    • Multi-value list items provide users with flexibility, allowing them to select multiple options at once, which is important in many scenarios like survey forms, preference settings, or categorization tasks.
  2. Compactness:
    • A multi-select list (or checkbox group) allows users to select multiple options within a compact space without overwhelming the user with too many options at once. This is more efficient than using separate fields for each possible selection.
  3. Data Submission:
    • Multi-value items allow for cleaner, more efficient data submission. Instead of requiring multiple fields for each potential value, multi-value list items let the user select multiple options within a single input field. The selected values are sent as a list, which can be easily processed.
  4. Reduced Form Complexity:
    • With multi-value list items, you can reduce the number of fields on the form, which enhances user experience and simplifies the design of the page.

Disadvantages of Multi-Value List Items

  1. Potential for User Error:
    • Since multiple values can be selected, there is the potential for users to make errors by selecting too many or too few options. This may lead to validation issues, especially if not handled correctly.
  2. Performance Concerns:
    • If a multi-value list is populated with a large number of items, it could impact performance, especially in terms of page load times and responsiveness. This is something to consider for forms with hundreds or thousands of possible options.
  3. Complicated Validation:
    • Validating multi-value inputs can be more complex compared to single-value inputs, especially when you need to ensure that selections meet certain conditions (e.g., at least one option is selected, or no more than a specific number of options are selected).

Comparison of Multi-Value List Items

Feature

Multi-Select List

Checkbox Group

Shuttle Item

Multi-Value Select List

Selection Type

Multiple values selected using Ctrl or Shift keys

Multiple checkboxes can be selected

Transfer items between available and selected lists

Multiple values can be selected in a dropdown

Data Format

Comma-separated list of selected values

Comma-separated list of selected values

List of selected items

Comma-separated list of selected values

UI

Single dropdown with multi-selection

Multiple checkboxes displayed in a group

Two lists (available and selected) with buttons to transfer

Dropdown with the ability to select multiple items

Ease of Use

Easy to use for compact forms

Intuitive for selecting multiple options

Useful for long lists of options

Compact dropdown interface for multiple selections

Validation

Can be validated for a minimum/maximum number of selections

Can be validated for a minimum/maximum number of selections

Custom validation for selected items

Can be validated for a minimum/maximum number of selections

Use Case

Selecting multiple items from a list (e.g., tags)

Selecting multiple categories, features, or interests

Assigning users or items to groups or projects

Selecting multiple attributes or filters in a compact form

Use Cases for Multi-Value List Items

  1. Survey or Feedback Forms:
    • A user selects multiple preferences or feedback options, such as choosing interests or rating multiple features in a product survey.
  2. Category or Feature Selection:
    • When creating a form where users need to select multiple categories or features, such as choosing product features, service options, or project roles.
  3. Role Assignment:
    • A system that requires multiple role assignments to a user or task (e.g., selecting multiple project teams, department memberships, or permissions).
  4. User Preferences:
    • Allowing users to select their preferred options from a list of predefined choices, such as notification preferences, topics of interest, or language selection.
  5. Search Filters:
    • For filtering search results where users can select multiple filters or attributes (e.g., selecting multiple product categories or price ranges).

Multi-Value List Items in Oracle APEX provide a powerful, flexible solution for allowing users to select multiple options within a form. These items are particularly useful in scenarios where users need to select multiple attributes, categories, or filters in a single form. Whether you're using a multi-select list, checkbox group, shuttle item, or multi-value select list, the ability to select multiple options at once improves the user experience and can simplify data entry and submission. However, developers must carefully manage validation, data handling, and performance concerns to ensure a smooth user experience.

ADDING FIELDS TO THE APPLICATION

 In Oracle APEX, “adding fields to the application” is really two related activities that must stay in sync: Adding (or exposing) the data...