Выражение для изменения цвета текста определенного значения в строке значений в SSRS на основе другого поля

У меня есть поле в моем отчете SSRS, которое содержит строку чисел, разделенных запятыми (из объединенного выбора в SQL). Выглядит как 12, 91, 160, 171, 223. Я хотел бы изменить цвет текста только ОДНОГО конкретного значения (например, 160) в поле, ЕСЛИ значение также находится в другом поле отчета.

У меня уже есть это выражение для шрифта свойств поля.

=iif(Fields!Store_Number.Value.ToString().Contains (Fields!DMHomeStore.Value)= True,"Red","Black")

Это изменяет цвет текста всего поля, а не только ОДНОГО значения в строке.

По сути, если DMHomeStore = 160, а Store_Number содержит 160 в строке, то сделайте только 160 Red в строке Store_Number.


person Emo    schedule 23.07.2010    source источник


Ответы (2)


Это, безусловно, можно сделать, и это не сложно сделать.

  1. Начните с пустой ячейки таблицы.
  2. Дважды щелкните ячейку -> Щелкните правой кнопкой мыши -> Создать заполнитель
  3. На вкладке «Общие» выберите «Значение» -> выберите поле, которое будет содержать строку чисел.
  4. На той же вкладке «Общие» выберите «HTML, интерпретировать теги HTML как стили».
  5. Нажмите ОК

Это первый шаг. Теперь все, что нам нужно сделать, это настроить выражение, которое найдет нужную строку, а затем заменит ее HTML-кодом, чтобы сделать ее красной.

  1. Щелкните правой кнопкой мыши ячейку -> Выбрать выражение
  2. Введите следующее выражение:
=Replace(Fields!Store_Number.Value.ToString(),Fields!DMHomeStore.Value," `<span style='color:red'>` " & Fields!DMHomeStore.Value & "`</span>`")

Запустите свой отчет, и только рассматриваемая строка будет красной, а весь остальной текст в ячейке будет черным. Если рассматриваемая строка не найдена, весь остальной текст будет черным.

person NakedBrunch    schedule 24.07.2010
comment
Я не уверен, что я что-то здесь упускаю, но я все еще получаю красную всю строку, а не только значение 160. Я полностью очистил камеру и начал с нуля. Создал заполнитель и в заполнителе выбрал поле Store_Number. Затем выберите HTML, интерпретируйте теги HTML как стили. Я также убедился, что свойства шрифта заполнителя по-прежнему имеют выражение =iif(Fields!Store_Number.Value.ToString().Contains (Fields!DMHomeStore.Value)= True,Red,Black). Затем сделал второй шаг, добавив =Replace выражение, которое вы мне дали. - person Emo; 03.08.2010
comment
Уберите выражение из свойства шрифта. Вы не хотите устанавливать цвет в двух местах. - person NakedBrunch; 03.08.2010
comment
Хорошо, попробовал, но теперь я просто получаю весь ряд черным. Без этого выражения iif что должно делать текст красным? Извините... Я никогда не умел пользоваться выражениями. - person Emo; 03.08.2010
comment
Я тоже должен добавлять HTML-код? Если да, то где? Спасибо еще раз! - person Emo; 04.08.2010
comment
Ты прав. Я только что заметил, что мой HTML не отображается. Это было в моем решении, но сайт не показывал мои HTML-теги в отображаемом ответе. Я поставил несколько фиктивных пробелов, и теперь теги отображаются правильно. Просто не забудьте очистить теги, и все будет хорошо. - person NakedBrunch; 04.08.2010
comment
Я только что добавил соответствующий Markdown, и теперь HTML отображается отлично. - person NakedBrunch; 04.08.2010
comment
Идеально! Это сделало это. Большое спасибо, Элисон. Но теперь возникла другая проблема .... если DMHomestore 19, он также меняет 19 на 190, 191, 192 ... и т. д. - person Emo; 04.08.2010
comment
В этом случае можно справиться, но в итоге вы получите длинную строку из нескольких функций замены, каждая из которых учитывает разные позиции нужной строки. Это выполнимо, но уродливо... но все же выполнимо. - person NakedBrunch; 04.08.2010

SSRS не будет отображать все HTML-теги, например, стили будут удалены из тегов span. Вот хорошая ссылка http://dinesql.blogspot.com/2010/05/reporting-services-2008-showing-html.html

person BobC    schedule 05.06.2013