ORACLE APEX MULTIPLE DYNAMIC ACTIONS ON SINGLE BUTTON IN UNIVERSAL THEME - oracle-apex

I have executed an pl/sql query on my "run report button". It works fine. After the execution of the query I want it to be redirected to other page.The page to which it should be directed must be a modal page. How can I achieve this in Oracle Apex 5.1.

Create a branch with Type - Page or URL after processing with the "run report button" as server side condition and specify the modal page as target page.
UPDATE
You could follow the methods described here and in here.
But here's another hack that's relatively simpler to implement over those 2 approaches.
Create a 'REDIRECT_TO_MODAL' button and set the server side condition to 'Never'
Create a After processing branch with Type - Page or URL target and specify the modal page as target and select 'REDIRECT_TO_MODAL' as the button in server side condition.
To the already defined dynamic action, add another true action after the execution of PL/SQL process and make it 'Execute Javascript' with the following code:
-apex.submit({ request:"REDIRECT_TO_MODAL",showWait:false});
Also, make sure on the modal page, both Page Mode and Dialog Template are set to Modal Dialog.

Related

How can I refresh and show/hide buttons in Buttons Container in Modal Dialog in Oracle APEX based on an Item Value?

In Oracle APEX 22.1 (Oracle Database EE 21c) I have a Modal Dialog Box which has a button container with several buttons. These buttons are being shown or not, based on a item in dialog box variable that is 0 or 1.
When I press the button "UnDelete", a Dynamic Action of PL/SQL execution type is fired, change the value of a field in the database and then two another Refresh True Actions follow. The PL/SQL execution type changes the value of the field in the database of a table successfully and the first dynamic Action refreshes a Classic Report Region on the Modal Dialog Box showing the new correct value of the field.
The second Refresh True Action tries to Refresh the Button Container Region of the Modal Dialog Box in order to hide the button "UnDelete" and show the rest buttons, which all are Server Condition based on this variable value. The Refresh does not take place(maybe the Button Container Region does not support the Refresh Event or does not propagate it to its Buttons)?
How can I achieve this effect?
Thanks In Advance!
I tried the Refresh Action for the Button Container Region of the Modal Dialog Box,but the buttons are not shown/hide accordingly.
"Refresh" is not relevant for a button container. The "refresh" action in apex does an ajax call to refresh the content of a report - it just re-renders a part of the DOM containing data. Currently only the data rendered by a component can be refreshed using partial page refresh. A button can never "refreshed", it is rendered in the page rendering process and from then on it lives in the DOM for the lifespan of the page.
A server side condition is evaluated at page rendering time. If a server side condition yields false at page rendering time, the component is not included in the dom. So, they cannot be shown using a dynamic action afterwards (because they're not in the dom) and they cannot be re-evaluated using a dynamic action (because the dynamic action can only manipulate the dom and that condition was evaluated before the dom was rendered).
The solution to you problem is to use show/hide actions in a dynamic action for each of the individual buttons for the reasons explained above.

How to detect a page refresh using javascript on APEX?

My goal is to do some javascript action the moment the user clicks the browser's refresh button.
I've tried:
Function and Global Variable Declaration
function pageunload(){
alert('here');
};
Execute when Page Loads
window.addEventListener('beforeunload', pageunload);
I know that the 'addEventListener' is working properly but the event is not the right one.
I have also tried to dynamic action "before Refresh", but I haven't been able to associate it to the page level, only items/regions etc.
In the page attribute you can write Javascript on Page Load which will be executed when the page is reloaded or submitted.
beforeunload is the opposite of what you want
Use the load event
Check Mohamad image
Create a dynamic action for page Load

Refresh only one region instead of the whole page in oracle apex

I have made a region containing 2 display only items and a button.
The button performs some dynamic action (execute pl/sql query) and the page is refreshed every time the button is pressed (submit page action) .
Is there any way that on click of the button only that particular region gets refreshed instead of the whole page?
Also for the display only items, lets say
item_label ==> item_display_value
how to add this (==>) symbol in between?
If the page is submitted, then it will refresh completely - that is how apex works. But if a submit is not needed, you can add an action of "refresh" to the dynamic action and remove the submit. Make sure the "Behaviour > Action" property of the button is set to "Defined by dynamic action".
Note that not all region types support refresh, but all report types do.

Oracle APEX form on table, don't reset table pagination after changing values through the form

I have a form on top of a report, and when the user updates values in the report, the form pops up, they make edits, and then click "Apply Changes". There are many rows in the report and right now I have pagination set per every 15 pages. The report is set to enable partial refreshes so the data updates right after the user clicks "Apply Changes". However, if I am on any page other than the first page of the report, it resets the pagination and brings me back to the first page. Is there a way to update the report but stay on the page I'm making the edit for? That way the user can immediately see the change they made through the form.
I was able to solve the issue by using a Dialog Closed dynamic action executing the following javascript:
window.location.reload(false);
It refreshes the browser after the user makes edits, and the pagination does not reset. This is a workaround because the Refresh dynamic action resets pagination. Again this is in APEX 5.1.3.
Which Apex version do you use? I've just tried it on apex.oracle.com which runs Apex 20 and - no problem at all. Once I edit some value in a form, branch returns me to interactive report, to exactly the same page which I left.
Check branch's Behavior - it is set to redirect to page or URL, target is page where the interactive report is; check other properties for the target. Its action should be set to "None" (offered are: clear regions, reset regions, reset pagination which might be set in your branch properties).

Oracle APEX Select RDS Tab in URL

I am developing an application in Oracle APEX 5.1. I have a page which uses a region display selector. The default tab has general information which should be the active tab for anyone navigating to the page from within the app. The other tabs are detailed reports which are relevant to specific users. I want to provide these users with a URL to access the tab containing the reports that they're interested in.
I created a page variable, P14_ACTIVE_TAB, which is the static ID of the region associated with a particular tab. I use this variable in the following JavaScript code..
selectTab = "$('#myRDS .a-Tabs').aTabs('getTabs')['#" + $v('P14_ACTIVE_TAB') + "'].makeActive();";
console.log(selectTab);
eval(selectTab);
I have tested the code and it works correctly if I use it on a button, select list, etc. however I have been unable to get it to properly execute when a user navigates to the page using a URL like
f?p=100:14:::::P14_ACTIVE_TAB:myReport
If I define a dynamic action on page load it appears that the page is being rendered after the code is executed so I still get the default tab. If I look at the console output I see the correct code, which I can then cut/paste as a console command to get the desired result. So it appears that I have the right code being executed at the wrong time.
Does anyone have any suggestions how I can define the dynamic action to execute after the page has been rendered so the correct tab will be made active?
Thanks.