Version 1 - Using CSS and Dynamic Expressions
Check out version 1
Version 2 - Using CSS Only
This is my favorite version because it is done completely through CSS in a very concise manner. IMHO, it is quite impressive that it can be accomplished via CSS only.
Check out Version 2
Version 3 - Using WebFX SyncScroll Property
This is an example of a scrolling table created by KustomKraft , who has modified the SyncScroll Demo from WebFX to make it a little eaiser to use. According to KustomKraft, there are some limitations to this that he is also currently working on and has another version that is much harder to setup but does fix some of the problems. For most people this should work just fine.
Check out version 3
Version 4 - Using a Header Table and Data Table
This example demonstrates probably the most common implementation of this functionality. Essentially, it is super-easy to implement and figure out, but in some cases it is still difficult to make sure that the column headings line up with the data when the data gets wide.
Check out version 4