сохранить состояние dataGrid: видимые столбцы, ширина столбцов и порядок - PullRequest
2 голосов
/ 11 января 2010

Я хочу удаленно (в базе данных) сохранить состояние (видимые столбцы, ширина столбцов и порядок) FlexG DataGrid.

Для ширины и видимости я могу просто сохранить их, обратившись к каждому атрибуту столбца ... некрасиво, но возможно .. Но для заказа? Нужно ли динамически создавать dataGrid ??

Любая идея приветствуется спасибо

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

В моем случае я сохранил заказ по имени заголовка (я предполагаю, что ваша 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
        }
0 голосов
/ 11 января 2010

Почему вы не можете просто сохранить заказ, пока просматриваете каждый столбец?

for(var i:int = 0; i < dataGrid.columns.size; i++)
{
    var column:DataGridColumn = dataGrid.columns[i];
    arr.push({column.visible, column.width, i});
}
...