I tried viewing the example at [http://www.litotes.demon.co.uk/example_scripts/tableScroll.html|http://www.litotes.demon.co.uk/example_scripts/tableScroll.html] and it is coming up Page Not Found. Does anyone have an updated link? (Oh I hope so!)

Erich,
I tried getting your version to work, also, but I'm having problems with the Row Template. Has anyone found another way to do this? I noticed that it doesn't look like the newer versions of APEX even have a Row template available, unless you create one from scratch. I was able to get Linda's version working, but it would be nice to have it available in FF as well.

OK - this is not perfect by any means but it does show what can be done with not much more than a report template.

See [http://htmldb.oracle.com/pls/otn/f?p=267:5]

I have created a new report template based on my existing Standard template in my Theme 18 application (I'm sure the same principles would apply to all themes). In this template, I have made the following changes:

And I have switched off the Partial Page Refresh for the report (this reset columns widths for the headings and I couldn't get them back again!)

Some of these changes are for styling purposes so may not apply for some themes.

The old report template simply create a single table with TH cells for the headers followed immediately by TD cells for the data. I have changed this to close the table after the headings have been created and start a new table, wrapped in a DIV tag with a vertical scroll, for the data. I have also added a DIV tag around the headings table just to make the two tables appear consistent.

As it is not easy to specify the width of a column and copying the widths from the data table to the headings table wouldn't work in IE and FireFox, I have added a setwidths javascript function which needs to be called in the Region Footer to set the widths. The width values are passed as an array so that the javascript function can loop through the columns and the widths easily.

Finally, to make the report a bit customisable, I have added another function to specify the height of the DIV tag.

since we would have different region / report ids here, which we have used to hide the columns as discussed before in the thread mentioned and secondly in passing the row values when key up or down is pressed .

I am aware that pagination will not work with the above and nor will partial page refresh - in both cases that is because the setwidths() function is not being called as it is not included in the part of the page that is being rewritten. There's probably a way around this somewhere. However, given that this is for a scrollable report, it would seem strange to also have pagination???

Here On Page 3 on the application as per our previous discussion,it works all fine but fixed column header. I have put all the codes and it meets all the requirements including "on click" on report row and "cursor" movement to change the values in display region items at last & pending was constant column header.

As you said if we get scrollable region it doesn't make sense to have pagination.In earlier case (page 3) , unchecking the reset pagination for unconditional branching & selecting pagination type as "search engine 1,2,3.. set based pagination", it worked proper.

I tried to find solution on my local application but could not, so tried to replicate all on page 2 on OTN (Got stuck due to standrad focus error,would debug tomorrow), if you can suggest something here.

I developed the page 2 on the same application with current solution as per this thread, was able to hide columns and got constant headers.But how we are going to achieve the onclick and cursor movement functionality on the row by passing the row values to our java script function "passvalues" ?

In the HTML Header javascript, the code wasn't triggering the passValues() function as the r variable wasn't properly defined - I've added in a few lines that starts from the row clicked and finds the parent table and the rows are based on this table. The r variable could be made available from the setwidths function if the var declarations are moved outside of the function block.
The cursor up/down function wasn't properly formatted, so the loop wasn't running correctly. As you can see, I've reformatted the code - this helped identify that there was a missing }. I've assigned the column containing the current item into a variable vFields collection and used that instead of repeatedly finding the collection - this is a bit more efficient.
And, finally, I've increased the width of the Salary field from 100 to 110 to allow for the width of the input field plus padding - this is just to ensure that the columns line up correctly.
As far as I can tell, page 2 now functions as you need.
Andy

Many Thanks for your time as usual, it works for most of the part exactly as we required.
Noticed that, I was not getting the same behavior on my local application unless I changed the fields type as "Text Field" from "standard Report column" for departmentname and empname in the report,which we are hiding,
as you have done on page 2, it works as required.

The two things on page 2 which are differing from page 3( which meets all requirements other than fixed column header)
is:
1) Whenever Page is launched or refreshed i.e. say we come to page 2 from page 1,
the default values in the display region items should be as per row 1. So other than when request is "SUBMIT"
which we have set in the process for submit button => P2_REQUEST field,in all cases default value in the display items in last region should be as per first row.(i.e. empname as "Ravijeet" etc)
Looks like the report footer scripts in the region where we have display items is not kicking in properly:

2) Why we are getting some cursor focus error whenever request/Process is not "SUBMIT" say we come to page 2 from page 1, we get the error:
Error: can't move focus to the control because it is invisible, not enabled, or of a type that doesnot
accept the focus

Many Thanks for your valuable inputs, it resolved the point 2),we don't get any cursor focus error now,
as you said i was passing wrong id as 'f03_0001' rather than 'f04_0001' for the the focus to be in salary field on first row.Changed that on page 2, and it works good.

Point 1) is still unresolved
=> Actually in P2_SAL field we are holding the ID as assigned in the page header
function "passvalues" and we are using it in display region's footer to get its value ,which would be id.
And again this is the case in which we submit the page using "Submit" button,where it works fine.

Problem is How to pass the first row as parameter when the page is refreshed ?
(say via emp id LOV or page is first launched)
The requirement is that whenever we come to this for first time or page refreshed (other than via submit button)
the focus should on first row(which happens) & the Items in display region should contain value as per corresponding
value in first row (which doesnot happen on page 2, happens on page 3, value in display region items for first row,EMP Id,1,should be "Ravijeet" & "Corporate Application")

Currently we are tring to do that in display region's footer by calling "Passvalues" as
passValues(r.rows[1]) , but this is not working on page 2, which works on page 3.