2012-03-19 117 views
5

我怎麼能添加行號這樣的:如何在RDLC報告中爲每個組添加I rownumbers?

GROUP 1

ROWNUMBER ID名年齡

1   231  test  43 
2   324  test2 45 
3   354  test3 34 

GROUP 2

ROWNUMBER ID名年齡

1   657  test4 43 
2   534  test5 45 
3   678  test6 34 

我想要像這個例子一樣的行號..對於每個組我的行號將重置,並從1開始到組行數..我的gruops(第1組,第2組,......)來自db動態!我有多少組不清楚! here是我找到了一些解決方案,但我認爲這些解決方案可用於多少組,當我們知道!

回答

14

RDLC具有RowNumber("ScopeName")函數。這將返回給定範圍內的記錄的行號。

您可以在「行組」和「列組」標題下看到設計器下方報告的現有組。選擇您想要的行數,查看列行分組裏面的專欄中,默認名稱爲:

[(Group1) 
≡(Details1) 

設置的行號列的表達式是

=RowNumber("Group1") 
1

右擊在你的報告屬性,然後去代碼然後粘貼下面

Dim private count as integer = 0 
    Dim private iniRow as integer = 0 
    Dim private iniGrp as Object = "" 
    Public function MatrixRow(Byval rowNum as integer,Byval rowGrp as Object) as integer 

    if iniGrp = "" then 
     iniGrp = rowGrp 
    end if 

    if rowGrp <> iniGrp then 
     iniRow = 0 
     count = 0 
     iniGrp = rowGrp 
    end if 

    if iniRow = 0 then 
     iniRow = rowNum 
    end if 

    if rowNum = iniRow then 
    count = 0 
    end if 

    count = count + 1 
    Return count 
    End function 

的代碼,然後使用這個功能就像

=Code.MatrixRow(RowNumber(Nothing),(YourgroupfiledNameFromDataest)) 
+0

這是工作,除了每一頁計數器重置,所以它顯示1,2 ..再次。 – 2016-04-30 00:31:34

+0

這讓我走上了正軌,但我真的希望我的錶行被編號,無論數據或組或其他什麼,所以我只是刪除了'iniGrp','rowGrp'和兩個'if..then '。從代碼中包含它們的語句,以及函數調用中的第二個參數,它完美地工作。 – 2017-07-20 16:42:27