The reason you are finding such complex approaches to the issue is that there isn't any built in way to dynamically sort the records in a portal into different orders based on different fields.
If the number of sort options are small, the 'easiest way' in my opinion is to put a tab control on your layout. Put a different copy of the same portal on each panel of the tab control, but use Portal Setup to specify a different sort order on each tab. Then you can 'sort' your portal just by selecting a different panel of the tab control. If you make the tab control invisible, give each panel a different object name and precisely position and size the portal on each panel, you can even make this look dynamic by giving the layout a set of "sort" buttons that actually use Go to Object to bring different panels of the invisible tab control to the front.
I did it, and if it´s not perfect, works great for me.