有一個報表的資料源是一個對象的List, 這個對象List中還有層級,其中還有其他的對象List,這樣的層級有三層。其資料是從資料庫中取出來的。其LINQ的操作太多了而且複雜,是以不太可 能從LINQ中挖掘出SQL語句了,隻能從這個對象List作為報表資料源。報表是SSRS 2008R2版本的,自定義對象綁定到報表上,隻能用LocalReport模式了,即RDLC的方式。在相關類上定義一個Public,傳回 list<相關類> 的方法, 然後在RDLC的report data視窗中就可加dataset, 資料連接配接處就可選擇對應的名稱空間。然後傳回list<相關類>的方法就可以選擇了。這樣就将自定義對象加入了報表作為資料源。之後就可以将 這個資料往報表裡布局。這個相對簡單就不多說。
在調用報表的時候需要new 一個ReportDataSource對象,然後将此ReportDataSource對象Add到報表的DataSources屬性中。至于下一層級, 我們得在此報表中加入子報表。然後定義一個Subreportprocessing的事件處理程式,在此事件處理程式中将子報表所需要的資料對象綁定到子 報表。子報表所需要的資料對象是在最上一層的對象中的,是其屬性隻一。取出,然後綁定。對于三層的資料對象結構,即子報表裡還得有子報表。綁定子報表裡的子報表需要同樣在Subreportprocessing事件處理程式中處理。