Discussions
Categories
- 196.7K All Categories
- 2.2K Data
- 235 Big Data Appliance
- 1.9K Data Science
- 449.8K Databases
- 221.5K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 549 MySQL Community Space
- 477 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3K ORDS, SODA & JSON in the Database
- 532 SQLcl
- 4K SQL Developer Data Modeler
- 186.8K SQL & PL/SQL
- 21.3K SQL Developer
- 295.4K Development
- 17 Developer Projects
- 138 Programming Languages
- 292.1K Development Tools
- 104 DevOps
- 3.1K QA/Testing
- 645.9K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 153 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.1K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 17 Java Essentials
- 158 Java 8 Questions
- 85.9K Java Programming
- 79 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.2K Java SE
- 13.8K Java Security
- 203 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 394 LiveLabs
- 37 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.6K Other Languages
- 2.3K Chinese
- 170 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 230 Portuguese
DA refresh region of interactive report (IR) will reset the pagination

Hope sombody can help me with this.
I use a jQuery Call in a DA to change a IR. This works fine. Since I do not want to refresh the entire page but only the IR, I refresh the IR Region within the DA and then cancel the request (cancels page submit). This also works but it will always reset the pagination of the IR.
When I do a page submit instead of th regeion refresh, the pagination is not changed.
Does sombody have a solution to keep the current page of the IR after a region refresh from a DA?
We are using Apex 4.2
Thanks
Gerd
Best Answer
-
Yes, I had the same problem. I ended up using a custom javascript function for refreshing the IR.
First, you have to set the pagination of your IR to Row Ranges X to Y of Z.
Then you place this code in your page, Javascript -> Function and Global Variable Declaration:
function refreshIR() { var min_row, max_row, total_rows, rows_fetched, pagination; pagination = $.trim($("#apexir_DATA_PANEL>table>tbody>tr>td>span.fielddata").text()); min_row = pagination.split(' ')[0]; rows_fetched = $("li.dhtmlSubMenuSelected").text(); max_row = rows_fetched; total_rows = pagination.split(' ')[4]; if (isNaN(total_rows) || parseInt(total_rows, 10) <= parseInt(rows_fetched, 10) || isNaN(rows_fetched.toLowerCase())) { gReport.pull(); } else { gReport.navigate.paginate('pgR_min_row=' + min_row + 'max_rows=' + max_row + 'rows_fetched=' + rows_fetched); } }
And finally, when you want to refresh your IR, in your DA use Execute JavaScript code:
refreshIR();
Hope this helps.
Answers
-
Yes, I had the same problem. I ended up using a custom javascript function for refreshing the IR.
First, you have to set the pagination of your IR to Row Ranges X to Y of Z.
Then you place this code in your page, Javascript -> Function and Global Variable Declaration:
function refreshIR() { var min_row, max_row, total_rows, rows_fetched, pagination; pagination = $.trim($("#apexir_DATA_PANEL>table>tbody>tr>td>span.fielddata").text()); min_row = pagination.split(' ')[0]; rows_fetched = $("li.dhtmlSubMenuSelected").text(); max_row = rows_fetched; total_rows = pagination.split(' ')[4]; if (isNaN(total_rows) || parseInt(total_rows, 10) <= parseInt(rows_fetched, 10) || isNaN(rows_fetched.toLowerCase())) { gReport.pull(); } else { gReport.navigate.paginate('pgR_min_row=' + min_row + 'max_rows=' + max_row + 'rows_fetched=' + rows_fetched); } }
And finally, when you want to refresh your IR, in your DA use Execute JavaScript code:
refreshIR();
Hope this helps.
-
Thanks very much for this. It works fine. I have 2 questions if you don't mind:
1. can you explain why li.dhtmlSubMenuSelected points to rowsSelected. Is it because this is the first submenu entry in the ir menu?
2. in gReport.navigate.paginate why is max_rows = rows_fetches instead of min_rows + rows_fetched
Thanks very much for you help!
Gerd
-
I have written that code a long time ago and it does need some improvement.
1. What I should have written was
rows_fetched = $("#apexir_ROWS_PER_PAGE_MENU>li.dhtmlSubMenuSelected").text();
That way I get exactly the selected entry in the Rows per page submenu.
2. I didn't really understand your question, but please notice that the plus sign there is actually string concatenation, not addition.
I was thinking of cleaning up that code and creating a plugin out of it in the next couple of days, so if you're interested, I could let you know when I'm done.
(Also, I apologize for my English, it's not my mother tongue.)
-
Here is the plugin that does exactly that, in case somebody else needs it.
Refresh Interactive Report without resetting the pagination: