Форматирование ячеек AdvancedDataGrid - PullRequest
1 голос
/ 21 апреля 2009

У меня быстрый вопрос о рендеринге ячеек с расширенными данными.

Мне нужно программно покрасить ячейку таблицы данных в зависимости от условий. Допустим, котировки акций. Если есть увеличение по сравнению с предыдущим днем, мне нужно, чтобы ячейка была окрашена в ЗЕЛЕНЫЙ и КРАСНЫЙ, когда есть уменьшение.

Теперь, важной частью здесь является то, что мне нужно делать эти вещи динамически, что означает, что когда пользователь включает сравнение / условия, тогда ячейки окрашиваются. И когда пользователь отключает сравнение, он снова возвращается к своему поведению по умолчанию.

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

Спасибо

1 Ответ

3 голосов
/ 22 апреля 2009

Средства визуализации элементов - это компоненты, используемые для определения внешнего вида «элементов» или подкомпонентов компонента. В случае ADG «элементы» - это отдельные ячейки. Вы можете создать полностью собственный класс, который будет функционировать как средство визуализации (если он реализует определенные необходимые интерфейсы) или, в большинстве случаев, вы расширяете существующий компонент. Поскольку средство рендеринга по умолчанию для ячеек ADG не поддерживает цвета фона, необходимо создать или расширить компонент, который его использует, и использовать его в качестве средства рендеринга. Это основная предпосылка, из которой работают эти учебные пособия, на которые ссылается следующий вопрос:

Настройка цвета фона для строки сетки данных в Adobe Flex

После создания itemRenderer, который поддерживает цвет фона, у вас есть два варианта того, где вы можете определить свои «условия»; внутри itemRenderer или с помощью функции styleFunction ADG (дополнительно требующей, чтобы ваш itemRenderer определял стиль "background").

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

.
if(data.today > data.yesterday)
{
    // set color or return style
}
else ...

Чтобы «переключать» пользовательские цвета ячеек, переключайтесь между пользовательским средством визуализации и средством отображения по умолчанию (бесцветным). Другими словами, установите свойство itemRenderer для своего пользовательского класса itemRenderer, когда вам нужно отобразить цвета, и установите его в «null», если вы хотите «поведение по умолчанию».

...