Nach dem Schließen eines Modalen Dialogs ist es oft notwendig, in der aufrufenden Seite eine Dynamic Action (DA) auszulösen. In APEX gibt es dafür einen DA Event “Dialog Closed”. Damit kann zum Beispiel eine Region aktualisiert werden.
Wenn der Benutzer im Modalen Dialog allerdings die Taste Escape drückt oder das Schließen-Symbol (X) oben rechts benutzt, wird der Dialog zwar geschlossen, aber das Ereignis “Close Dialog” wird nicht ausgelöst. Hier die einfachste Lösung, die mir bekannt ist.
Auf der Seite des Modalen Dialogs muss unter Page › Dialog › Attributes folgender JavaScript-Code eingebunden werden:
close: function(event, ui) {
apex.navigation.dialog.close(
true, {dialogPageId:2}
);
}
Die “2” am Parameter dialogPageId ist hierbei die Page-ID des Modal-Dialogs.
Dadurch wird die DA “Dialog Closed” ausgelöst und die DA startet auf für diese Fälle.
Ein Hinweis dazu: Der erwartete (und empfohlene) Ansatz ist, dass das Schließen eines Dialogs keinen Einfluss auf den Session-Zustand haben sollte. Das bedeutet auch, dass es eigentlich nicht notwendig ist, Inhalte auf der Elternseite zu aktualisieren. Die Anwendungslogik sollte daher vor dem Einsatz dieser Methode überdacht werden, um die Benutzererwartung zu erfüllen.
Gefunden habe ich die Lösung im Blog von Thirumalai:
https://feed-skill.blogspot.com/2018/07/refresh-interactive-grid-ig-when-model.html
Alternative Lösungen werden Oracle Forum diskutiert:
https://community.oracle.com/message/13117493