Форматирование ячеек 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", если вы хотите "поведение по умолчанию".