I recently had this requirement for freezing the column and header on a Classic Report, just the way you can with Excel. The report had too many columns and once you scroll horizontally or vertically you would loose track of the information you’re seeing.
It turns out freezing the header is pretty straight forward and it’s even out of the box functionality on the Interactive Reports, but not for Classic Reports.
If you only need to freeze the headers, just head over to Marko Gorički’s blog “How to make any table header sticky” and be done with it.
However, freezing columns is a completely different technique from freezing a header, or it requires special markup. Ideally, I didn’t want to create a Custom Template (even though, you know, I’m a big fan).
After some discussions and good advice from my buddy Vincent Morneau, I began scouring the interwebs for a suitable solution.
This JSFiddle https://jsfiddle.net/RMarsh/bzuasLcz/3/ seemed very promising and easy to adapt to Oracle APEX Universal Theme markup.
It seemed to me that I had to adjust selectors. So
table.t-Report-report thead, and so on. You get the idea.
Then, after a working prototype, I saw the opportunity to bundle everything in a nifty easy to use APEX Plugin. You can find the plugin in apex.world and Github https://github.com/rimblas/apex-freeze-col-headers. Maybe you will find it useful.
Using it is dead simple:
- Create an “After Refresh” Dynamic Action on the Classic Report you want to “freeze”.
- For the True Action select “Insum Freeze Headers & Column”
- Make sure “Fire on Initialization” is Yes.
- Don’t specify an affected element; the plugin uses