2013年9月17日 星期二

ReportViewer 在VS2010的使用方式(三)


ReportViewer VS2010的使用方式(三)

作者:JB

目前我們已經知道如何用ReportViewerbind資料,
1.
ReportViewer 在VS2010的使用方式(一):使用元件功能設定資料來源

在此篇文章會介紹如何修改Rdlc報表做分頁。
此文章仍是沿用既有的專案做修改。

1.      開啟「MyReport.rdlc



2.      點選【資料列群組】下方的【詳細資料】右邊的箭頭,選擇【加入群組】→【父群組】。



3.      Tablix群組,輸入「群組依據」為
= Int((RowNumber(Nothing)-1)/5)
按下「確定」。



※此公式意指不對任何欄位做群組,而是單純以RowNumber5筆分頁

4.      此時報表上面的欄位多出一個Group1資料行。(如果您不想顯示這個資料行,稍後會進行刪除。)



5.      但是到這邊執行起來的話,會出現一個error
「‘Tablix1’ 的排序運算式使用函數 RowNumber。排序運算式中不能使用 RowNumber。」       
原來我們剛剛加了群組後,報表會自動把群組的欄位(這邊是RowNumber)當成排序的條件!
所以我們必須自行刪除這個排序條件。

點選【資料列群組】下方的【Group1】右邊的箭頭,選擇【群組屬性】。
開啟群組屬性視窗後, 到「排序」頁面下,點選右邊的排序依據,然後【刪除】它。 (如下圖)
刪除後,先別急著關閉群組屬性


6.      雖然在上面的步驟已經解決了把RowNumber當成排序條件的錯誤。 但是這樣還不能成功分頁。
必須再做以下設定,一樣是在「群組屬性」→「分頁符號」頁面下,勾選

u  在群組的每個執行個體之間
u  也在群組的結尾



7.      進行以上的設定後,終於可以分頁了! 但是左邊多出一個Group1的資料行? 另外從第二頁開始的表頭欄位通通不見了?
第一頁:正常


第二頁:#@#$R$%$@



8.      多出一個Group1的資料行解決方式,在報表設計畫面上,直接選取Group1的整個資料行,


右鍵選擇【刪除資料行】


此時會跳出確認對話窗,請務必選擇「只刪除資料行」!


成功將Group1欄位刪除,但是仍然有群組的作用,所以分頁沒有問題!



9.      至於要重新將每個分頁上面的表首欄位叫出來, 可能大家有發現在 「Tablix屬性」裡面,有選項可以設定耶! 大家可以試看看,在VS2010 Sp1 這個設定是無效的 (怒!




要解決這個問題,請參考以下前輩的文章:

[C#][WebForm]如何固定ReportView表頭

RDLC 設計心得,重複標題,連續報表,單頁大小

但是目前測試結果,好像有時候可以有時候不行 … Orz
有興趣可以參考以下步驟試看看




畫面會變成這樣



點選【資料列群組】→Group1上面的「靜態」 , 到右方的屬性將
RepeatOnNewPage」設定為 True





10.  結論是 X你又浪費我一天時間了 >_<

沒有留言:

張貼留言