RDLC報表:每頁顯示N條記錄


摘要:

  提供一種方案,使分頁瀏覽的報表每頁顯示固定條數記錄,最后一頁記錄條數不足的,用空行補齊。

示例:

  記錄共7條,每頁顯示5條記錄: 

 

 

  下載代碼(vs2008,需要安裝AdventureWorks數據庫)

  下載代碼(vs2008,不需要數據庫支持)

  下載代碼(僅rdlc報表定義文件)

原理:

  由於表的分組包含“在起始處分頁”和”在結束處分頁”的功能,所以我們考慮先將數據分成若干個記錄條數為N的組,

再啟用“在結束處分頁”的功能。

  那么,如何分組呢?考慮記錄的下標為 0,1,2,3... 的自然數序列,用下標除以N(設為3),得到以下數列:

  0  /3  取整:0

  1  /3  取整:0

  2  /3  取整:0

  3  /3  取整:1

  4  /3  取整:1

  5  /3  取整:1

  6  /3  取整:2

  所以,我們可以以下標除以3的商的整數值對數據進行分組,則每個分組包含3條數據。當記錄條數不能被3整除時,最后一個分組會不足3。分組表達式為 =Int((RowNumber(Nothing) - 1) / N)。

  另一個需要考慮的問題是,最后一個分組的記錄條數可能不足N,怎樣以空白行補齊它呢?考慮TableRow.Visibility.Hidden屬性,可通過表達式設置它的狀態。為此,我們在詳細信息組內額外添加N-1行,如果檢查到當前是記錄的最后一組最后一條並且該組記錄條數不足N時,將Hidden設為Flase;其它情況為True。

表達式為=IIf(RowNumber(Nothing) = CountRows("table1") AndAlso CountRows() <= r,False,True)。其中r從1開始遞增。

實現:

  1.新建WinForm項目,用報表向導添加一張報表,數據源為AdventureWorksDataSet的Employee數據庫表,調整詳細信息(這里只選擇了表內前面7條數據):

  2.(以下都是在報表的設計模式中)在表內添加組,分組表達式為 =Int((RowNumber(Nothing) - 1) / 3),取消包括組頭和包括組尾,勾選在結尾處分頁:

  3.連續插入兩行:

  4.選擇插入的第一行(TableRow3),在Visibility的Hidden屬性下選擇“表達式”,在打開的文本框內填入

=IIf(RowNumber(Nothing) = CountRows("table1") AndAlso CountRows() <= 1, False, True);同理,在插入的第二行(TableRow4)同位置填入

=IIf(RowNumber(Nothing) = CountRows("table1") AndAlso CountRows() <= 2, False, True):

  5.運行程序,可以看到前兩頁分別只有3條記錄,最后一頁1條,空白處用空行補齊了:

注意:

  如果要在數據集記錄條數為0的時候也達到這個效果,只能在數據傳遞到報表之前預處理,添加一行空記錄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM