Tuesday, January 06, 2009

Creating dynamic multi column LOV's in APEX


The default LOV's in APEX are implemented as a pop-up window, with the restriction that you can only show one display value. This is sometimes just what you need, but mostly it is not sufficient. You can create a longer display value by concatenating strings, but that won't enhance the looks of your application. What you do need is an LOV with multiple columns, more or less something similar as the LOV's you can get in good old Oracle Forms.
You can create an LOV Page for every LOV that you need and create a button with a link to that page for any item, but than you'll end up with lots of pages. Wouldn't it be better to use a similar feature as APEX itself has: Define an LOV query and attach that to an item?


So I created two tables: LOV_ITEMS and LOV_DEFINITIONS. The first one holds a reference to the APEX Page Items and a reference to a LOV Definition. The last one contains the SQL Query that will be used in one generic 'LOV Page' to show a report that acts as an LOV. With some templating for the looks, jQuery to dynamically create the buttons with the links and some javascript (Ajax) to show and hide the LOV the result looks a lot better.

A live demo and more details are available here.
Post a Comment