4 Replies Latest reply: Oct 28, 2013 3:21 PM by anai RSS

    DA refresh region of interactive report (IR) will reset the pagination

    gerdp

      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

        • 1. Re: DA refresh region of interactive report (IR) will reset the pagination
          anai

          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.

          • 2. Re: DA refresh region of interactive report (IR) will reset the pagination
            gerdp

            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

            • 3. Re: DA refresh region of interactive report (IR) will reset the pagination
              anai

              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.)

              • 4. Re: DA refresh region of interactive report (IR) will reset the pagination
                anai

                Here is the plugin that does exactly that, in case somebody else needs it.

                Refresh Interactive Report without resetting the pagination:

                http://www.apex-plugin.com/oracle-apex-plugins/dynamic-action-plugin/refresh-interactive-report-1.0_361.html