2009-08-17 5 views
2

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

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(); 

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

Любые идеи?

ответ

6

Добавьте оператор импорта в верхней части файла класса:

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

Затем удалите с помощью mx_internal имен, удалить владелец столбца, изменения ширины и затем reasign родителя:

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; 
    } 

Это должно сделать трюк (ну, это сделало для нас через пару дней ругательства)

+0

Прежде всего, спасибо за отличную помощь. Но этим решением я могу решить проблему, когда создаю datagrid в первый раз, но когда я изменяю размер столбцов, последний столбец занимает дополнительную ширину, даже я вызвал эту функцию после события «columnStretch» ​​datagrid. Помогите мне ... –

3

Устанавливается ли значение horizontalScrollPolicy равным false на datagrid?

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

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

0

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

+0

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