I have a popup LOV page item in my oracle APEX application who's list is pulled with a SQL query. When I try to change the value of the popup LOV from runtime the new value is not displayed in the page item.
I can tell that the change is registering and that the value is being stored because I have a dynamic action that depends on the value of the page item that is working correctly. In addition to that the debugger is confirming that the value is being stored in the page item but the page item isn't displaying a value.
A few other things that might be worth noting:
When I statically assign a value to the page item that value displays as intended but when I switch the value from the static assignment it doesn't show up.
I have other popup LOV page items that are doing almost the exact same thing in the same application and don't seem to have this problem. I have double checked the attributes of the page items and I can't find any discrepancies that would cause this, but I am new to Oracle APEX so I might have missed something.
After removing the popup LOV page item as one of the "items to submit" in a dynamic action that was triggered on the popup LOV changing, the problem was solved.
Related
Please refer to the azure link for the built code and github link for the source code. To explain the scenario, I have a q-datatable from Quasar Framework. Since I have nested data, I am populating primary data in a collapsible for loop and secondary data in the content of collapsible as a datatable. The page also features an Edit/View Mode toggle just below the filters on the right. I have formatted the columns of the datatable to show q-input when in Edit Mode and just text in View Mode. Please do the following operation to reproduce the error. Steps 5 and onward are the steps producing unexpected behavior.
Expand one of the rows at the link(open in new window manually).
Toggle the Edit/View toggle which can be found just below the filters.
Trying editing any row. Observed Result: The values do persist in the text boxes on leaving focus, and also in the labels when page mode is changed back to View mode.
Add a new row by clicking on Add button found just below the row header.
Try typing in any of the text boxes in the newly added row and move to the ext text box. Observed Result: The values do not persist in the text box neither do they show in the labels when changed to View Mode.
Change mode back to View Mode and then back to Edit Mode. Observed Result: Values do show in the text boxes in edit mode but not in the View Mode.
Add a new row. Observed Result: Now the previously added row values show in both Edit and View Modes.
The problem was in the AddRow method. It is stated in the documentation that vue can only track changes to objects with defined properties. In the AddRow method I was adding an empty data object to the model. Adding properties with null values fixed the issue.
I created 2 interactive reports to work as a master detail. In the master, I have a link that will refresh the detail report with records for the master.
I have a create detail record button that will call a page as a modal window and then save. Everything works correctly except the Create detail button does not refresh with the master record id. The button is suppose to set the page item on the modal for the master record id.
It looks like the button is built when the original page is built and never changes. I have a dynamic action that sets an item on the main with the master record ID and I assumed that the button would use that, but it never refreshes with it.
How do I get the button to refresh when I change the item that holds the master record id? I can try and build it other ways but the I can not get the checksum to work and it will throw an error when the modal opens.
Here is the javascript call attached to the onclick of the button:
apex.navigation.dialog('f?p=810:6010:14381566697413::NO::P6010_TRACK_SERNO,P6010_FORM_ACTION:90,CREATE\u0026p_dialog_cs=z9T5rK-dt186xh83jq4Dy4d2vumFtU_Fj1a0Opm8M4gyGXp5eQ89zcx3KvDE84L_63s_4583R7WGcYhAHXyX1Q',
{title:'Level',height:'500',width:'720',maxWidth:'960',modal:true,dialog:null},
't-Dialog--standard',
$('#createLevel'));
I am just trying to change the P6010_TRACK_SERNO item from 90 to 95 as an example
In these cases I usually set the value of the item not on button click, but on initializing the called page.
For example, you could copy the item value via PL/SQL in Pre-Rendering like this:
:P6010_TRACK_SERNO := :P0000_MASTER_ID;
Is that an option?
When deleting records within the platform, this action is not reversible via the front end. Is there a way to allow users to remove a record from their view without actually deleting the record?
You can simulate recycle bin functionality within Archer GRC by adding a record permission field that grants read access to "Everyone". If read access is no longer required then an editor of the record can go in and change "Everyone" to a group called "Recycle Bin."
Please note that if there are other record permission fields in the application, users or groups may still have access if they are selected in those fields. Perhaps You can set up a dropdown status field for the user to select "Recycle Bin" and use this condition for automatic record permissions to revoke permission to the record depending on the requirements or workflow of the application.
Solution shared by Igritte might be somewhat confusing for end users.
End user will see greyed out "Delete" button in the top toolbar, but he has to select "Recycle Bin" in the form. This solution was not accepted by my business owner at some point.
As a work around for "Soft delete", I wrote a custom object overriding "Delete" button functionality.
1. User doesn't have delete access to the record, so JavaScript code will make "Delete" button look like active and available.
2. Once the button is clicked, custom object will populate value in the
hidden value list and simulate the click on the "Save" button.
Update: Note that Custom object needs to hide the value list first once the page is loaded. Here you will need to use a JavaScript and do the following: [a] locate the value list DOM object and [b] set display attribute to none. I used jQuery library to do both. This way your value list is not displayed, but you still can use it to control data driven events.
3. With hidden value populated and submitted, record permission will hide this record from the end user.
Note that custom object hides one value list on the layout as well.
If for some reason JavaScript doesn't load properly, user simply will not be able to click on the grayed out "Delete" button.
Update: Hidden value list can be populated by custom object using JavaScript code as well. You need to identify the form tag "input" in HTML code of the page and set attribute "value" to the desired state. I used jQuery library to do this as well.
I have this solution in production working fine with IE11, FF and Chrome.
I can't share the code, but with WC3Schools JavaScript guides and 4 hours you can write and test it yourself with very little JavaScript skills.
Sometimes you have to use custom objects when you want to get a user-friendly solution of not available functionality.
Good luck!
Problem I recently had a form with buttons, radiobuttons, etc within a group box. I deleted the groupbox, but kept it's contents. Unfortunately, now whenever I'm in the designer editing, and I move one of those controls, I get this error:
"Value cannot be null. Parameter Name: child."
So, From what I could tell from some searching is that one of the parameters is set to NULL. In this case it is the child/parent parameter of the control.
Question How do I reset this parameter? I didn't see it shown in the properties nor the designer.cs.
What I've tried
I tried one of the radio button sets by deleting and creating new ones in the form. This caused the two radio buttons go into stack overflow, for when I click one it tries to NOT the value of the other, and the other does the same. This creates a sort of infinite loop.
Any suggestions?
I am working on an add-on for the new google sheets and seem to have hit a problem. I am dynamically generating x number of checkboxes for a user to select. When the user selects some boxes and submits, I am submitting this data to a server handler. However, I can't find a way to get out which checkboxes were selected as I don't know their names. The names are dynamically generated and represent of the ID of the content to retrieve for the user.
Is there any way to find out which checkboxes have been checked on the server side when the name of the checkboxes isn't known?
When you are setting the element's name, set the id to the same as the name and ensure each checkBox has a click handler. Then use:
var source = e.parameter.source;
which returns the id of the clicked element.
The examples given by Srik and Serge insas in response to this question should hopefully help you. There are a few similar posts. Just search for "e.parameter.source"
You'll also find info in the docs here.