Невозможно динамически изменить ширину столбца в гибкой сетке данных - PullRequest
0 голосов
/ 17 мая 2011

Это очень очень расстраивает.Я использую одноэлементный класс (всплывающее окно, что означает, что он не забывает последние использованные переменные), который содержит сетку данных.Я делаю различные столбцы видимыми / невидимыми, устанавливая ширину и заголовки в соответствии с данными, полученными из вызова базы данных.Все работает отлично, за исключением того, что когда я ставлю точки останова до и после точки, где я изменяю ширину столбцов, я не вижу изменения в ширине сетки данных вообще!Вместо этого я вижу некоторые значения совершенно не синхронизированными как ширина столбца сетки данных!Однако, поскольку это одноэлементный класс, в следующий раз, когда я вызываю это всплывающее окно, я вижу ширину, которую я установил в последнем вызове.

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

Я сохранил политику горизонтальной прокрутки как 'выключенную' (ее включение полностью испортило ее).

Если я выполняю datagrid.validateNow (), она нене поможет!И, черт возьми, я не вижу, как изменение ширины отражается сразу, если я ставлю контрольные точки до и после изменения.Кто-нибудь, пожалуйста, сообщите мне о том, что я делаю здесь неправильно.

Спасибо.

Ответы [ 2 ]

1 голос
/ 17 мая 2011

Прежде всего вы указываете себе, что здесь может быть не так.

1) При обновлении ширины, когда компонент виден => без изменений

2) Когда вы закрываете всплывающее окно и снова открываете его, все в порядке, это также означает, что элемент был повторно обработан, тогда как это было не в первый раз. Это означает, что вы действительно должны попытаться запустить это самостоятельно.

Вот несколько полезных ссылок, касающихся жизненного цикла компонентов Flex. Это должно помочь вам выяснить, какие методы вызывать и / или переопределять.

http://weblog.mrinalwadhwa.com/2009/06/21/flex-4-component-lifecycle/

http://www.slideshare.net/rjowen/adobe-flex-component-lifecycle-presentation

Кроме того, вы никогда не должны вызывать validateNow () напрямую, а вместо этого использовать методы аннулирования.

Полагаю, в этом случае вам нужно запустить измерение вашего компонента, поэтому вызов invalidateSize () должен работать просто отлично.

Приветствия

0 голосов
/ 24 июля 2011

Ключ в том, чтобы установить horizontalScrollPolicy = "on", прежде чем устанавливать ширину.См. фиксированная ширина строки в причуде DataGrid или Проблема ширины столбца DataGrid Flex 3

...