В моем случае я сохранил заказ по имени заголовка (я предполагаю, что ваша DataGrid всегда имеет одинаковые столбцы и имена заголовков).
for (var n:Number = 0; n< datagrid.columns.length; n++)
{
var thiscol:DataGridColumn = DataGridColumn(datagrid.columns[n]);
colArray.addItem(thiscol.headerText);
}
Затем я могу восстановить порядок столбцов, извлекая упорядоченный список заголовков столбцов и меняя положение столбцов в таблице данных, как требуется.
for (var n:Number = 0; n < colArray.length; n++)
{
moveColumnTo(String(colArray.getItemAt(n)), n);
}
Я определил функцию moveColumnTo () для выполнения переключения.
private function moveColumnTo(columnName:String, columnIndex:Number):void
{
// Find current column position
var i:Number = -1;
for (var n:Number = 0; n < datagrid.columns.length; n++)
{
if (DataGridColumn(datagrid.columns[n]).headerText == columnName)
{
i = n;
break;
}
}
if (i == -1 || i == columnIndex) return; // Don't shift column
this.mx_internal::shiftColumns(i, columnIndex); // Shift column to required position
}