Hi,
Instead of getting the index of the fromField and toField through the NameToField method, try getting them from the VisibleColumns.Indexof() method. Then insert the dragged column to the toField index through the VisibleColumns.Insert() method. Please refer to the attached sample that seems to work as expected.
// modified code
int toField = childTD.VisibleColumns.IndexOf(e.InsertBeforeColumn);
int fromField = childTD.VisibleColumns.IndexOf(e.Column);
childTD.VisibleColumns.Remove(e.Column);
childTD.VisibleColumns.Insert(toField , e.Column);
Here is a sample
GGC_SwapCols.zip
Let me know if you need any further assistance.
Regards,
Rajagopal