基礎環境
最近在公司做西門子某系統的二次開發,需要用到SQLServer Reporting Services(SSRS)。我們用的SQL版本是SQLServer 2008 R2;在設計報表時,表格用的是矩陣(Tablix)。由於集團使用者在西門子系統實施當時,已向西門子開發人員提出過這個問題,西門子當時給出的回答是:“技術原因,不能實現。”。
現在回想,一是他們沒仔細研究過這個問題,二是關於SSRS的資料實在太少的緣故吧。
技術實現
首次嘗試是通過Tablix屬性
發現即使把這些“功能”全部勾選,也不能實現想要的效果。報表資料的表頭還是不能分頁顯示,還是不能被“凍結”。
研究了下,發現通過修改報表檔案的xml程式碼可以實現想要的效果。
在開啟xml檢視後,查詢<TablixRowHierarchy>節點,
找到節點後,修改第一個TablixMember(一般第二個是group資訊)
為方便大家修改,貼出程式碼:
<TablixRowHierarchy> <TablixMembers> <TablixMember> <KeepWithGroup>After</KeepWithGroup> <RepeatOnNewPage>true</RepeatOnNewPage> <FixedData>true</FixedData> </TablixMember> <TablixMember> <Group Name="pom_order_id"> <GroupExpressions> ...
其中<KeepWithGroup>節點和<RepeatOnNewPage>節點的使用,作用是翻頁顯示錶頭;<FixedData>節點則是凍結表頭,即拉動滾動條時顯示錶頭。
最後,報表實現效果
關於SSRS更多技術內容,請持續關注。