SSRS 2012交替组颜色在行内

时间:2015-03-12 22:39:11

标签: sql-server reporting-services ssrs-2012

嗨我有一张带有表格的简单SSRS 2012报告。所有数据都通过存储过程显示。没有分组,即

部门名称年龄
ClassA Bob 15
ClassA Sue 16
ClassA Jo 15

ClassB Sam 15
ClassB Jack 15
ClassB Mary 16
ClassC Pete 15
ClassC Sue 16

ClassD Jo 15
ClassD Mary 14
ClassD Jack 14

我想为每个'组提供行颜色块。改变,即白色,然后是蓝色

非常感谢

4 个答案:

答案 0 :(得分:1)

您可以在任何希望报告更改颜色的位置使用以下表达式(背景,文本)。

=Switch(
        Fields!Dept.Value = "ClassA" , "Red"
      , Fields!Dept.Value = "ClassB" , "Orange"
      , Fields!Dept.Value = "ClassC" , "Green"
      , Fields!Dept.Value = "ClassD" , "Yellow"
      )

答案 1 :(得分:0)

Report标签上Report Properties... - Code插入以下代码:

Dim LastDept AS String = ""
Dim Color AS String

Function GetColor(Dept As String) AS String
  if (Dept <> LastDept) Then
    if (Color = "White") Then
      Color = "PowderBlue"
    Else
      Color = "White"
    End If
  End If
End Function

然后将行的BackgroundColor表达式设置为

=Code.GetColor(Fields!Dept.Value)

每当部门更改时,将在White和PowderBlue之间切换行的背景颜色。

答案 2 :(得分:0)

我一直在寻找同样的解决方案,并且偶然发现了这个解决方案。

将以下表达式添加到正在分组的行的背景颜色属性中将交替Gainsboro和White之间的组颜色。

=IIF(RunningValue(Fields!Category.Value,CountDistinct, Nothing) MOD 2 = 1, "Gainsboro", "White")

Where Fields!Category.Value是您正在分组的存储过程中的值。

我希望这就是你要找的东西。

由于

答案 3 :(得分:0)

我在各种替代色彩场景中使用这样的东西。

在报告的自定义代码中:

Private CountArr(,) AS String
Private eleID AS Integer
Public Function AlternateColours(OddCol AS String, EvenCol AS String, RowID AS String, UserID AS Integer)

    If UserID > eleID
        eleID = UserID
        ReDim Preserve CountArr(1,eleID -1)
    End If

    If CountArr(0,UserID-1) <> RowID
        CountArr(0,UserID-1) = RowID
        CountArr(1, UserID-1) += 1
    End If

    If CountArr(1, UserID-1) MOD 2 <> 0
        Return OddCol
    Else
        Return EvenCol
    End If

End Function

Public Function ResetAlternateColours(Value AS String)

    ReDim CountArr(1, 0)
    eleID = 0
    Return Value

End Function

<强>说明

OddCol是第一种颜色,EvenCol是备用颜色,RowID是一个字符串,用于确定何时发生行更改 - 这可以是正确标识新行的任何值,例如字段值的串联,甚至只是对于未分组的行的任意字符串。 (根据您的要求,您的参数将是Fields!Dept.Value)

UserID是用户选择的Integer值,用于标识行在数组中的位置。建议用法是按照从1开始呈现报告的顺序提供数字。

仅供参考:报告按阅读顺序呈现,即从左到右,从上到下。

如果您希望交替颜色从头开始,您也可以使用重置功能。对于我个人使用,我有一个字符串作为值并在重置后返回该值。

= Code.ResetAlternateColours(字段!Total.Value)

没有必要,您可以从函数中删除返回值,然后将其添加到单元格的末尾。

= Fields!Total.Value + Code.ResetAlternateColours()

记住渲染订单,你应该没事。

只要您记住渲染顺序并相应地增加UserID,此函数可用于列,行,单元格以及您可以想到的任何其他内容。

供您使用:

= Code.AlternateColours(&#34; White&#34;,&#34; Blue&#34;,Fields!Dept.Value,1)