Forum Stats

  • 3,826,852 Users
  • 2,260,713 Discussions
  • 7,897,101 Comments

Discussions

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

gerdp-Oracle
gerdp-Oracle Member Posts: 12 Employee
edited Oct 28, 2013 4:21PM in APEX Discussions

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

User_UQTH63503851

Best Answer

  • anai
    anai Member Posts: 50
    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.

    3503851

Answers

  • anai
    anai Member Posts: 50
    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.

    3503851
  • gerdp-Oracle
    gerdp-Oracle Member Posts: 12 Employee
    edited Oct 22, 2013 10:01AM

    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

  • anai
    anai Member Posts: 50

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

  • anai
    anai Member Posts: 50

    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

This discussion has been closed.