This blog will teach you how to create a cascading LOV using Shared Components of Oracle APEX.  After that, we will show you how to implement the cascading LOV with a popup LOV page item.

Example Scenario

Imagine we are trying to build a form for a car repair shop.  The form we want to create will have two popup LOVs, one for the car make, and another for the car model.

In this case we want to use two popup LOVs and not two select lists, because the lists of car makes and models would be too big.

LOV Setup

  1. Navigate to Shared Components/List of Values
  2. Create two new dynamic LOVs
  3. For this example, I am using two Function Returning SQL statements

return lov_car_model(v('P' || :APP_PAGE_ID || '_CAR_MAKE'));

If we use this code, then the variable passed is not page specific.  This is useful when you have multiple pages that are reusing the same LOVs and page items.

Applying the First LOV to the Parent Page Item

  1. Select the page item you want to use as the parent LOV
  2. Make the item a Popup LOV type
  3. The parent LOV is straightforward and just needs to have the LOV assigned under the List of Values section

Applying the Second LOV to the Child Page Item

  1. Select the page item you want to use as the child LOV
  2. Make the item a Popup LOV type
  3. The child must have Manual Entry turned on if you are doing any set value Dynamic Actions for these two page items
  4. In the List of Values section, in addition to selecting the child LOV, we need identify the parent item under Cascading List of Values

Requirements

  • Oracle APEX 19.1

Learn More

Disclaimer:
We do not take responsibility for any unintended or unwanted consequences in your instance of Oracle, Oracle APEX, or related products as a result of reading our blogs or following our guides. Though the information is fully tested and generally safe to use, our lawyers really have a thing against admitting potential wrongdoing. If it makes you feel any better, one time I saw them drive their 100% electric car to a gas station.  They searched for the gas tank for no fewer than 5 minutes, but it probably would have taken them less time to figure it out if didn’t keep telling them I could see the tank on the other side.