Recently one of our clients upgraded APEX from 5.1 to 18.1 and all Interactive Grid regions/pages were instantly "broken". There was some strange JS error ("...to few arguments") in the console window.
After some investigation I found out the cause of the error. It's actually reported as a known issue (28202781 - INTERACTIVE GRID IN TRANSLATED APP GIVES ERROR ON UPGRADE). Apparently the text string APEX.IG.SUMMARY was changed in APEX 18.1 to have fewer parameters and if you have translated application it will raise a JS error at runtime. I don't know why APEX raises error in this case and I hope that this will be fixed in some next release, but for now here's the way how you can fix this.
Of course, you can go to APEX builder > Shared Components > Text Messages and translate it there with the new text message that will have exactly two parameters (if you have less than two you'll again get JS error). Original text is Interactive Grid. Report: %0, View: %1.
You can also do it with PL/SQL script:
Tested with APEX 18.1.0.00.45
Enjoy!
After some investigation I found out the cause of the error. It's actually reported as a known issue (28202781 - INTERACTIVE GRID IN TRANSLATED APP GIVES ERROR ON UPGRADE). Apparently the text string APEX.IG.SUMMARY was changed in APEX 18.1 to have fewer parameters and if you have translated application it will raise a JS error at runtime. I don't know why APEX raises error in this case and I hope that this will be fixed in some next release, but for now here's the way how you can fix this.
Of course, you can go to APEX builder > Shared Components > Text Messages and translate it there with the new text message that will have exactly two parameters (if you have less than two you'll again get JS error). Original text is Interactive Grid. Report: %0, View: %1.
You can also do it with PL/SQL script:
BEGIN
FOR i IN (SELECT workspace_id
FROM apex_workspaces
WHERE workspace = :WORKSPACE_NAME)
LOOP
apex_util.set_security_group_id(i.workspace_id);
END LOOP;
FOR i IN (SELECT *
FROM apex_application_translations
WHERE application_id = :APP_ID
AND translatable_message = 'APEX.IG.SUMMARY')
LOOP
apex_lang.update_message(
p_id => i.translation_entry_id,
p_message_text => 'Interactive Grid. Report: %0, View: %1');
COMMIT;
EXIT;
END LOOP;
END;
/
Tested with APEX 18.1.0.00.45
Enjoy!
No comments:
Post a Comment