Jorge Rimblas
DRW, Enterprise APEX Development Team Lead
Browser events
Dynamic Action Structure
Demos
AJAX
Advanced Dynamic Actions
(this means changing the HTML)
(this means changing the CSS and Styles)
Client Side
Server Side
4.2
5.0
19.1
APEX
4.2
APEX
5.x
APEX
19.x
More about this later
[Optional Client Side Condition]
[Affected Elements]
[Affected Elements]
[Optional Client Side Condition]
[Optional Client Side Condition]
[Optional Client Side Condition]
[Optional Client Side Condition]
APEX 21.1 →
APEX 21.1 →
APEX view
When will the Dynamic Action execute?
On click
On item (data) change
On Focus
On Page Load
On (any) browser event
etc
Where will the event happen?
Where will the event happen?
Item(s)
Button
Region
Column(s)
jQuery Selector
JavaScript Expression
P11
p20
p20
Sometimes a good alternative to Hide & Show
P25
Condition
Condition
P30
$s("{ITEM}", "{VALUE}");
// Set to today
$s("P30_LOG_DATE", "&P30_TODAY.");
// Clear date
$s("P30_LOG_DATE", "");
p40
Event
Set Value action
this.triggeringElement.value
.toUpperCase()
.replace(/\s+/g, '_')
.substring(0, 20);
p110
APEX 4.2
APEX 5.0
APEX 5.1 - 19.1
and beyond...
asynchronous JavaScript and XML
group of interrelated Web development techniques used on the client-side to create asynchronous Web applications
Wikipedia: en.wikipedia.org/wiki/Ajax_(programming)
Client Side
Server Side
AJAX
JavaScript
SQL
PL/SQL
It's easy!
p215
insert into app_user_roles
( username
, role_key)
values
( :P215_USERNAME
, :P215_ROLE_KEY);
delete
from app_user_roles
where id = :P215_UR_ID;
this.triggeringElement.getAttribute("data-id");
this.triggeringElement.dataset.id
this.triggeringElement.dataset.id
// data-id="{value}"
this.triggeringElement.dataset.id
// data-active="YES"
this.triggeringElement.dataset.active
// data-selected="YES"
this.triggeringElement.dataset.selected
// data-lineID="123"
this.triggeringElement.dataset.lineID
// data-rownum="2"
this.triggeringElement.dataset.rownum
this.triggeringElement
this.browserEvent
this.data
Available inside the DA JavaScript
var el = this.triggeringElement;
var $el = $(this.triggeringElement);
this.triggeringElement.value
.toUpperCase()
.replace(/\s+/g, '_')
.substring(0, 20);
APEX 2x.x
APEX 5.0, 5.1
APEX 18.x, 19.1
Easy Prototyping with triggeringElement
( rimblas.com/blog/2014/06/easy-prototyping-when-using-apex-da-triggeringelement/ )
Jorge Rimblas