Hola,
tal como te dice Neftalí, deberias usar los eventos drag&drop. En el momento del drop, lo unico que deberas hacer es editar y intercambiar el campo en el cual esta ordenado ese momento. Para saber los valores de la celda en la cual estas en el momento de soltar, puedes usar lo que se comento en
este hilo. A ver si te sirve, saludos.