Есть несколько способов решить эту проблему. Двумя основными являются использование правил видимости или выделения для создания условного форматирования. Видимость особенно привлекательна, поскольку легко применять правила форматирования только к определенным типам вывода (например, HTML).
Для этого конкретного случая есть две проблемы с этими подходами. Во-первых, я хочу общие решения, где мне не нужно указывать цвет текста. Другими словами, когда условие истинно (значение 0), я хочу, чтобы мой цвет текста соответствовал цвету фона. Таким образом, если кто-то изменяет backgroundColor для элемента управления, код все еще работает.
Другая проблема заключается в том, что в этом случае я использую динамическое связывание столбцов, которое не поддерживает поиск значений.
Решением, которое я создал, было добавить функцию JavaScript с именем hideMe, как показано ниже.
function hideText (dataControl){
if (dataControl.getValue() == 0) {
var color = dataControl.getStyle().getBackgroundColor();
var parentItem = dataControl.getParent();
do {
if (color == null && parentItem != null) {
color = parentItem.getStyle().getBackgroundColor();
parentItem = parentItem.getParent();
} else {
break;
}
} while (color == null);
dataControl.getStyle().color = color;
}
}
Как только эта функция была добавлена в отчет (в моем случае это включенный файл JavaScript), я просто вызываю ее из метода элемента управления OnCreate.
hideText(this);
Это также можно сделать с помощью обработчиков событий Java, но этот метод кажется более простым.