Do you know how to set up a "horizontal portal"?
They are a series of one row portals that either display different initial rows and/or have a portal filter to control which record appears in each one row portal.
If you had this relationship:
LayoutTableOccurrence::gCategoryID = Products::Category
You could set up a grid of one row portals to Products on your layout. The first would specify initial row: 1; the second would specify initial row: 2; and so forth...
The portal on the left listing categories can be set up with a button that performs a script to assign a value to gCategoryID to control what records appear in the portals.