按列中的数字交替显示行颜色

时间:2019-03-29 16:05:45

标签: reporting-services

我有一列带有数字的列,这些数字确定了工作和后缀:

示例:

|Jobnumber|Suffix| 
  x001       1 - white
  x001       2 - grey
  x001       2 - grey
  x001       3 - white
  x002       1  <---- where it would break the alternating color, Should be grey!
  x002       1 - should be grey
  x002       1 - should be grey
  x002       2 - should be white
  x002       2 - should be white
  x003       1 - should be grey

我已将报告设置为接受范围Jobnumbers和范围Suffixes,因此每个Jobnumber都有一组按升序排列的后缀。我用不同的Suffix颜色替换了表达式代码,但是当下一个JobnumberSuffix在报告中的下一个出现时,它会中断。

当下一组JobnumbersSuffixes出现在报告中时,如何使行仍按颜色交替显示?

1 个答案:

答案 0 :(得分:1)

如果您希望交替的行颜色忽略作业编号和后缀,则将表达式基于ROWNUMBER而不是后缀。

例如void* thread1_entry(void* input) { while (!second_ended){} int ret; /* This may return error when thread2 has not been created yet*/ ret = pthread_join(thread2, NULL); printf("hello from 1-%d-%s\n", ret, strerror(ret)); return 0; } void* thread2_entry(void* input) { printf("hello from 2\n"); printf("exit from 2.....\n"); second_ended = true; return 0; }

更新:基于修订的问题

可能会有更优雅的方法,但是以下方法应该可以工作。

要做的第一件事是转到报表属性,并将两个报表变量添加到报表中。添加值为=IIF(ROWNUMBER(Nothing) MOD 2, "LightBlue", Nothing)的{​​{1}}和值为AltBackColour的{​​{1}}。关闭只读复选框 enter image description here

下一步,单击“代码”选项卡,添加以下功能。

1

最后,将行的LastRownumber属性设置为以下表达式。

-1

我对您的示例数据进行了此处理,并获得了以下结果。

enter image description here

基本上,代码检查后缀的工作是否已更改,并在1和0之间切换一个标志以指示要使用的颜色。它还会检查我们是否没有像以前一样检查同一行。这样做是因为即使我们设置了行的backcolor属性,但实际上发生的是每个单元格都获得了backcolor属性集,这意味着将为每个单元格调用代码并将继续翻转该标志。通过检查行是否已更改,我们可以解决此问题。