At the moment, I have hard coded resetting each column by it's name to it's original order. There has got to be an easier way.Off the top of my head, you could add a custom array property to your grid and populate it at runtime in the init() of the grid with code ( UNTESTED! ) like this:
IF DODEFAULT()
DIMENSION This.aColumnOrders[ This.ColumnCount ]
FOR lnCol = 1 TO This.columnCount
This.aColumnOrders[ lnCol ] = This.Columns[ lnCol ].ColumnOrder
ENDFOR
ENDIF