While a pure reordering of fields in an existing layer may not be possible, it can be done if you look at it another way. Let the user select the order they wish the fields to be laid out. Create a new empty copy of the layer with that structure and then transfer the existing data to this new layer. Create any permissions, indexes, etc on this new layer as it exists on the original layer. Delete the original layer and rename the new one. This is basically what SQL Server does in the background when a user reorders fields on a table. As far as the user is concerned, they are just reordering fields. They do not need to know the detail of how much work is actually being performed in the background, it just happens.
... View more