Basically, the functionality that you mentioned is achievable. The current approach is handled in the code-behind of the project, on the server. There, the items that will be swapped have their contents interchanged. If you decide to take a different approach, i.e.move all columns down by one, to accommodate the new one, you can use similar logic, but you will need to:
- preserve the contents of the row that will be moved
- delete the row that will be moved
- either swap all remaining rows, or insert them anew.
This is the logical frame for the approach that you are looking for, and which is close to the code already available. However, such a scenario will impose a serious performance penalty, especially if the number of rows involved is bigger.
I hope this information helps.