APEX Tip: Page Auto Refresh
This tip provides your users with the option of choosing a refresh interval for the page. The following steps were tested with APEX version 2.2 but should work on earlier versions of APEX or HTMLDB.
- Create an Application Item to store the current refresh interval (e.g.
F100_REFRESH_INTERVAL
) - Create an Application Computation to initialise it (e.g.
F100_REFRESH_INTERVAL_COMP
):- Computation Item =
F100_REFRESH_INTERVAL
- Computation Point = On New Instance (e.g. On Login)
- Computation Type = Static Assignment
- Computation = (default number of seconds, e.g. 60)
- Computation Item =
- Create a static List of Values (e.g.
REFRESH_INTERVAL
):
Display – Return
1 sec – 1
5 sec – 5
10 sec – 10
30 sec – 30
1 min – 60
5 min – 300
(you can change this list how you like, as long as the return values are positive integers)
(it is probably not a good idea to provide zero seconds as an option, as this will cause the page to continually refresh without giving the user much chance to intervene)
Now, for each page you wish to have auto-refreshed, edit the Page Properties:
- HTML Header =
<meta http-equiv="refresh" content="&F100_REFRESH_INTERVAL.">
Somewhere in your application you will want to provide the user with a way of modifying the refresh rate. I prefer to provide this on the same page that is auto-refreshed.
Create an Item (e.g. P1_REFRESH
):
- Display As = Select List with Submit
- Region = (any region, I prefer the Breadcrumb region if one exists)
- Label = Refresh
- Source Used = Always, replacing any existing value in session state
- Source Type = Item (application or page item name)
- Maintain session state = Per session
- Source value or expression =
F100_REFRESH_INTERVAL
- List of Values definition =
REFRESH_INTERVAL
I also like to show the date/time when the page was last refreshed. To do this, I just add a display-only text item to the page with:
- Source Used = Always, replacing any existing value in session state
- Source Type = PL/SQL Expression or Function
- Maintain session state = Per session
- Source value or expression =
TO_CHAR(SYSDATE,'Dy DD Mon HH24:MI:SS')
Now, the page will be auto-refreshed according to the default interval, and the user can change the refresh interval using the select list.
You can add the item and the auto-refresh header to any page you like. If you need a different refresh interval on different pages, you will need to create additional Application Items, along with their own Application Computations to initialise them.
If the user hits the “Stop” button in IE, the page seems to stop auto-refreshing. I don’t know if this feature works the same in other browsers, however.