You did not mention which grid you were using. Selected records should be maintained automatically through a sort if you are using a GridGroupingControl. If you are using a GridDataBoundGrid, then that grid relies on the underlying IBindingList.Sort to manage the sorting and this does not include preserving selected records.
Here is a forum post that asks about preserving selections when sorting a GridDataBoundGrid.
http://www.syncfusion.com/support/forums/message.aspx?MessageID=74058