Skip to Main Content
Feature Request FR-2191
Product Area Page Components
Status ROADMAP

58 Voters

Freeze Columns for Classic & Interactive Reports

nicolas pilot Public
· Nov 11 2021

Idea Summary
It would be very nice to allow developer to freeze columns in Classic & Interactive Reports.

And have an horizontal scrollbar for others columns 

Use Case
Sometime, we need to display large tables with a lot of columns and this would be very useful in such cases.

Preferred Solution (Optional)
It would be nice to be able to freeze the first x columns + the last x columns at the same time. So the scrollbar appears only on the remaining columns

Note
I understand that this does not fit well in the responsive design, but some business applications are not designed to run on mobile…

This is currently on the roadmap for a future release of Oracle APEX.

Comments

Comments

  • bernard.clouse OP 3.7 years ago

    Any table that doesn't fit on the screen (I have several such tables in my app) is rather difficult to use currently.  This change would be a big help.

  • matthew.blasi APEX Team OP 3 years ago

    You could use CSS to freeze any number of adjacent columns which is how the frozen columns work in the Interactive Grid. It's not as simple as the preferred solution I know but it does work for what you are trying to accomplish. 

    .t-fht-thead tr th:first-of-type,
    .t-fht-tbody tr td:first-of-type {
        position:sticky!important; 
        z-index:100;
        left: 0;
        background: #ccc;
    }
    

    Then if for example you wanted the second column as well you would need to apply the position sticky to both columns. The ‘left’ value. is where the left edge of the column is held, so in the example below the first column holds to the left edge. Since the first column is 60px wide the second column needs to hold to the right edge of the first column. So for each column you freeze you will need to set the left position.

    .t-fht-thead tr th:nth-of-type(-n+2),
    .t-fht-tbody tr td:nth-of-type(-n+2) {
        position:sticky!important;
        z-index:100;
        left: 60px;
        background: #ccc;
    }
    
    .t-fht-thead tr th:first-of-type,
    .t-fht-tbody tr td:first-of-type {
        left: 0;
    }
    

    If you use this solution I would suggest making this more specific to the report and using an ID to target it with the CSS especially if you have multiple reports on a single page. 

    For targeting the child tabs if this a good reference for the nth-of-child use with CSS: https://css-tricks.com/useful-nth-child-recipies/

  • nicolas pilot OP 2.9 years ago

    Thank you Matthew,
    this will definitly help some developers as a work around.
    But it will be much much better and robust to have it "built-in" by a declarative way...

  • tdoberman OP 2.9 years ago

    Exactly, Oracle is doing a lot of new things, not all very necessary, not all understandable, instead of devoting any part of the work to improve things that already exist. Otherwise, the overall quality of the product unfortunately goes down…

    and workarounds work, until you use some special option on an object or do an APEX upgrade....

  • bernard.clouse OP 2.9 years ago

    The CSS change works perfectly for the report that I've been fretting over for many months.  Thanks !

  • shyamngr OP 2.9 years ago

    Can we change order of column based on run time condition.

  • derik.tran OP 4 months ago

    It's an important feature on interactive reports and all our users are asking for it.  Can we work on this instead of a bunch of other features that less than 5% uses vs 100% impact for all?