Альтернативные цвета строк с группировкой в ​​RDLC - PullRequest
8 голосов
/ 10 декабря 2010

Мне нужно создать альтернативные цвета строк в моем отчете RDLC, который также учитывает группы.

Если я использую выражение

=Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")

Очевидно, что это создает проблемы при использовании групп. Мне не очень повезло с поиском информации, поэтому любая помощь будет отличной.

Ответы [ 3 ]

12 голосов
/ 13 декабря 2010

Решили перейти со следующим кодом, который я нашел в Интернете:

=IIf(RunningValue(Fields!GroupId.Value, CountDistinct, Nothing) MOD 2, "White", "#d6f1fc")

Он не чередует каждый цвет строки, но сохраняет все строки в этой группе одинакового цвета, что делает отчет приятным и легко читаемым.

7 голосов
/ 25 мая 2011

Я знаю, что эта тема была поднята давным-давно, но в случае, если у кого-то есть подобная проблема (как у меня), и она попадает в эту ветку, вот как я решил эту проблему. Вот пример группировки отчета и примеры результатов в моем отчете:

Группа 1
Sub 1
Sub 2
Sub 3

Группа 2
Sub 1
Sub 2
Sub 3

Обратите внимание, что 'Sub [1-3]' - это точно такой же заголовок. При использовании (Fields! GroupId.Value, CountDistinct, Nothing) оператор определяет, что существует только 3 уникальных значения, и когда он попадает в повторяющиеся подгруппы (Sub [1-3]), результат RunningValue не увеличивается .

Вы можете проверить это, добавив дополнительный столбец в свой отчет и затем выражение: (RunningValue (Fields! GroupId.Value, CountDistinct, Nothing). Результаты будут выглядеть следующим образом:

Группа 1
Sub 1 1
Sub 2 2
Sub 3 3

Группа 2
Sub 1 3
Sub 2 3
Sub 3 3

Поскольку значения начинают повторяться, часть 'mod 2' логики чередующихся строк испорчена. Чтобы обойти это, я использовал оператор RunningValue, объединяющий заголовок группы и подгруппу:

(RunningValue (Fields! GroupId.Value + Fields! SubGroupId.Value, CountDistinct, Nothing)

После того, как я это сделал, я получил такой результат:

Группа 1
Sub 1 1
Sub 2 2
Sub 3 3

Группа 2
Sub 1 4
Sub 2 5
Sub 3 6

Добавьте это в выражение чередующегося ряда, и оно должно работать!

1 голос
/ 21 октября 2014

используйте это: = iif (RowNumber (Nothing) Mod 2 = 0, true, false)

...