Если у вас стандартная компоновка столбцов, создайте DataTable с этой компоновкой и привяжите к ней. Затем, когда они хотят сохранить дескриптор, что таблица не существует, и создать ее на основе строк в связанной DataTable.
Если у вас нет стандартного макета столбца, вам придется предоставить какой-то механизм для получения макета. Либо обработайте события перемещения ячейки и создайте макет самостоятельно, либо создайте другой элемент управления (конструктор таблицы), который позволит вам указать макет. После того, как у вас есть макет, вы можете сделать то же, что и выше.