Вопрос

В моем приложении flex я сохраняю ширину и видимость столбцов в xml-файле.Когда приложение загружается, оно считывает данные из xml-файла и устанавливает соответствующие значения столбцов:

for(i = 0; i < columnsOrder.length; i++){
    newOrder[i] = myDG.columns[Number(columnsOrder[i]) - 1];
    newOrder[i].visible = (Number(columnsVisiblity[i]) == 1);
    newOrder[i].width = Number(columnsWidth[i]);
}
myDG.columns = newOrder;
myDG.invalidateList();

Проблема, по-видимому, заключается в настройке видимости (она правильно устанавливает видимое поле, но изменяет ширину)...Я пробовал устанавливать его после установки ширины (вне цикла), а также перед циклом.Он изменяет размеры столбцов должным образом, если я ничего не делаю с видимостью.

Есть какие-нибудь идеи?

Это было полезно?

Решение

Добавьте инструкцию import в верхней части вашего файла класса:

импорт mx.core.mx_internal;

Затем удалите, используя пространство имен mx_internal, удалите владельца столбца, измените ширину и затем переназначьте родительский:

public static function resizeColumn(col:DataGridColumn, size:int):void
    {
        var owner:* = col.mx_internal::owner
        col.mx_internal::owner = null;

        col.width = size;

        col.mx_internal::owner = owner;
    }

Это должно сработать (ну, у нас получилось после пары дней ругани).

Другие советы

Установлена ли ваша horizontalScrollPolicy в false в datagrid?

"Если свойство horizontalScrollPolicy для DataGrid равно false, все видимые столбцы должны умещаться в отображаемой области, и DataGrid не всегда будет учитывать ширину столбцов, если общая ширина столбцов слишком мала или слишком велика для отображаемой области".

http://livedocs.adobe.com/flex/3/langref/mx/controls/dataGridClasses/DataGridColumn.html#width

Я смог заставить его работать, дважды вызвав приведенный выше цикл в функции...в первый раз, когда он добавляет видимые столбцы, во второй раз он устанавливает правильную ширину.Не самое лучшее решение, но я не могу больше тратить на это время.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top