SSRS 中用于排序的不同颜色

Different color for sorting in SSRS

我有一个客户想要在 SSRS 报告中使用一些颜色格式。由于客户要求,我无法使用分组。我按 Main Tank 对报告进行排序,并希望这些排序颜色交替。所以它会有几行 Tank A 都是灰色的,然后几行 Tank B 都是白色的。我目前正在使用它,但它只适用于每种类型的第一行

=iif( Fields!Tank.Value=previous(Fields!Tank.Value), "Transparent", "Red" )

任何帮助都会很棒。

我会在您的查询中处理这个问题,方法是添加一列 returns 0 或 1 来定义颜色 - 创意草图:使用排名获取与排序顺序相关的数字,然后使用 MOD 2 得到 0 或 1。如果您 post 一个示例查询,我们可以帮助找出具体细节。

您可以使用自定义代码来获取所需的逻辑。在您的代码中使用自定义函数,returns 颜色基于 Tank 值。

转到 Report 菜单,Report Properties / Code 选项卡,然后在文本区域输入此代码:

Dim prevColor As String = "Transparent"
Public Function GetColor(ByVal flag As Integer) As String
  If flag = 1 Then
    If prevColor = "Transparent" Then
      prevColor = "Gray"
    Else
      prevColor = "Transparent"
    End If
  End If
  Return prevColor
End Function

现在在单元格背景颜色属性中使用这个表达式:

=Code.GetColor(iif(Fields!Tank.Value=previous(Fields!Tank.Value),0,1))

它将给背景着色如下:

更新: 上面的逻辑只对第一、第三、第五列等正确着色。是多次调用GetColor函数,覆盖了全局变量prevColor.

造成的

我设法通过将行号传递给函数来解决这个问题。这是更新后的功能:

Dim prevColor As String = "Transparent"
Dim rowNum As Integer = 0
Public Function GetColor(ByVal flag As Integer, ByVal nRow As Integer) As String
  If flag = 1 And rowNum <> nRow Then
    If prevColor = "Transparent" Then
      prevColor = "Gray"
    Else
      prevColor = "Transparent"
    End If
  End If
  rowNum = nRow
  Return prevColor
End Function

请注意,该函数接收一个新参数,因此调用表达式已更改:

=Code.GetColor(iif(Fields!Tank.Value=previous(Fields!Tank.Value),0,1),
RowNumber("DataSet3"))

Replace "DataSet3" by the actual name of your dataset.

它应该生成以下 tablix:

如果有帮助请告诉我。