2015-11-07 39 views
0

刪除隱藏的行我用這對我的背景顏色的SSRS如何從交替背景色

IIF((ROWNUMBER(沒有)模2), 「亮灰」, 「白」)

before hidden row

,但我需要隱藏我在Tablix中然後使行的一個這樣的事情發生

after row hidden

繼續與隱藏行交替行的顏色最好的辦法是什麼?

+0

你是如何在表格中隱藏行的?您是否在使用過濾器或其他方法來更改可見性? – Jonnus

+0

我右鍵單擊Tablix行並選擇Row visibility ...然後我添加了我的表達式以根據year參數的條件隱藏行。當年份更改爲2015年時,該行變爲隱藏狀態,因此交替出現的背景顏色被擡起。 – TechGrl1

+0

作爲一般性評論,過濾表格會更有效率。右鍵單擊Tablix,選擇篩選,並選擇年份= 2005。使用此方法,您現有的計算應該可以工作 – Jonnus

回答

0

你見過this previous answer關於交替行顏色?

您可以使用CountDistinct和RunningValue的組合來計算背景中的行號,然後可以使用該行號來設置行的BackgroundColor屬性,前提是每個要報告的行都有唯一的值。

例如,在表矩陣行

=iif((RunningValue(CountDistinct(Fields!Serial.Value), Sum, "DataSet1") mod 2) = 0, "Tomato", "LimeGreen") 

設置此表的backgroundColor屬性下面的表達式爲具有交替的紅色和綠色的行。

enter image description here

+0

如果一行被隱藏,這會給出相同的結果。如果(例如)行B法語SN006被隱藏,則上面的行和下面的行是紅色的,並且會混淆交替的行顏色。 – TechGrl1

0

基於this回答另一個問題,我有交替行的顏色的另一種方法,此時服用隱藏的行考慮。

您需要將以下自定義代碼添加到報告

Dim CurrentColour As String 
Dim LastRowNumber AS Integer 

Function SwitchColour(ThisRowNumber As Integer) As String 
    If CurrentColour = "" Then 
     CurrentColour = "Red" 
    End If 

    If LastRowNumber = 0 Then 
     LastRowNumber = ThisRowNumber 
    End If 

    If LastRowNumber <> ThisRowNumber Then 
     ' Change the colour 
     If CurrentColour = "Red" Then 
      CurrentColour = "Yellow" 
     Else 
      CurrentColour = "Red" 
     End If 
     LastRowNumber = ThisRowNumber 
    End If 

    Return CurrentColour 
End Function 

這有效地節省了CurrentColour橫跨在報告中堅持元素的值。當SwitchColour函數運行時,它確定行號是否已更改(LastRowNumber <> ThisRowNumber),如果更改則更改單元格的顏色。

採用該試樣數據作爲「數據集1」

Val | Colour 
----+------- 
36 | Red 
22 | Red 
55 | Green 
23 | Red 
74 | Red 

,並設置電池BackgroundColour

=Code.SwitchColour(RowNumber(「DataSet1」)) 

給這個結果

enter image description here

當你再申請一個知名度表達到行使用該表達否定的值,例如「綠色」

=iif(Fields!Colour.Value = "Green", True, False) 

結果是這樣

enter image description here

注着色仍發生變化,儘管有不同於的中間不存在的記錄表格

這是您想要的行爲類型嗎?是否可以應用於您的項目?如果您需要進一步的幫助,請告訴我。