Форматирование ячеек AdvancedDataGrid

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

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

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

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

Спасибо

1 ответ

Решение

Средства визуализации элементов - это компоненты, используемые для определения внешнего вида "элементов" или подкомпонентов компонента. В случае 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", если вы хотите "поведение по умолчанию".

Другие вопросы по тегам