OK. Your explanation just hurt my head. LOL
Actually, you only want to update the ordering column, and leave the rest of your row data the same. You don't need to do anything other than that.
row def as selected from sql ordered by rank ascending:
id, name, description, rank
13, widget1, just a widget, 1
15, gadget, just a gadget, 2
21, doo hickey, it does something, 3
If you swap gadget and doo hickey in your view, you'd swap their rank, and nothing else, in your dataset/table. In your move_up method you'd select the rows that match the moving item's rank (3), and its rank minus 1. Then you'd update each row's rank with its new rank (2 for doo hickey, and 3 for gadget), then sort the rows again and rebind. It would be similar in a move_down method. Technically, you wouldn't even need to commit the changes to the database until all the moves were completed and the user chose to save them.
Check out the DataTable documentation and look at the Select method for specifics on how most of this would be done.
I'd give you a code example, but I'm currently at work.