I had a requirement once to load and display thousands of rows to the user without pagination in a Visualforce Page. I also had to have a checkbox for each row and the "select all" functionality, exactly like you. It was a crazy requirement, but I managed to give them what they wanted in the end.
The way I resolved this was by incorporating AngularJS into the VF page and utilizing a directive called infinite-scroll
that you can find here.
I would load all row data into JavaScript variable so that I could bind the Angular controller to it. The page would initially render only 200 rows, I believe, and then, whenever the user would scroll down the page the infinite-scroll
directive would load another 20 rows, so the user wouldn't even notice that not all rows were loaded at once.
Of course, the page contained a filter
functionality at the top (also using Angular), so users were able to filter out the rows, and not scroll down into the abyss to find the desired row.
Also, the select all
checkbox was bound to a function that would iterate through all the rows in the model and change the isSelect
field to true
or false
.
That's the way I solved this, I hope this will give you some ideas.