The following very simple example shows 3 uses:
1) Enabling/disabling one field according to the value of another
2) Calculating and displaying a value when items are updated
3) Retrieving information from the database when an item is changed.
There is little documentation about Dynamic Actions yet, so I'm not sure I have always taken the best approach.
My example is a "Create Employee" page that inserts a row into the familiar EMP table:
I have created a Dynamic Action that makes the Commission item enabled only when the selected job is one of 'MANAGER' or 'SALESMAN'.
MANAGER selected:
CLERK selected:
These are "simple" actions, I merely had to specify which item values trigger the action like this:
... and then specify the item to be enabled/disabled.
Another dynamic action computes the "Total Package" as SAL+COMM when either of these two items are updated:
I did this using a Javascript fragment rather than PL/SQL, to avoid an unnecessary AJAX trip to the database:
(OK so I did have to write some Javascript! But not much.)
A third dynamic action fires when a manager is selected; this looks up the selected employee and gets his/her job title and department name and dislays them in 2 page items:
This last action isn't as efficient as I'd like because it results in 2 AJAX calls: one to get the job and one to get the department name. This could be a case of me just not knowing the right way to do it in one hit. I used 2 "true actions" that use SQL to set the value of an item. The first has this SQL:
select job from emp where empno = :p2_mgr
and the second:
select dname
from dept join emp using (deptno)
where empno = :p2_mgr
4 comments:
Hi Tony,
Nice post. I just wanted to comment on your final example and point you to a recent thread on the OTN forums that discussed exactly the point you raised.
http://forums.oracle.com/forums/thread.jspa?messageID=4477833�
Regards,
Anthony
Hi Tony,
I would like to ask a problem.
I have categories and parent categories in a table. This category dept can be 3 or 4. I have 4 select lists and these select lists have cascading LOV to fill sub-category. Here i would like to enable or disable sub select list depending on if it has options or not. I tried many ways but i couldnt do it.
Can you make an example like that.?
Thank you very much
Yavuz, see this demo I just set up, is that what you mean? http://apex.oracle.com/pls/otn/f?p=35662:9 If so, the trick is to create an item to hold the count of rows returned by the second LOV (it would be hidden but I left it displayed for testing purposes). Then create 2 dynamic actions: an action on the first select list to populate the count, and an action on the count to disable the second selec list when the count = 0.
... however I have just found that while it works in Firefox it doesn't work properly in IE! Oh well...
Post a Comment