Salve,
se ho ben compreso le tue esigenze,
... non so proprio come fare per avere una dataTable con le varie modifiche apportate dall'utente...
tendenzialmente "non puoi"... la datatable e' la parte legata ai dati, mentre la datagridview, nelle tue indicazioni, riguarda essenzialmente solo la "visualizzazione"... ovviamente tutte le modifiche ai dati si riflettono sulla datatable sottostante, mentre lo spostamento di colonne o altro non riguarda affatto la parte "dati"...
per gli ordinamenti potresti appoggiarti alla defaultdataview della datatable associata alla datagridview, mentre per le colonne, dovresti ciclare per il displayindex delle colonne stesse della datagridview e recuperare da questo le colonne della dataview...
salutoni romagnoli
--
Andrea