今天繼續學習RDLC報表的“參數傳遞”及“主從報表”
一、先建立DataSet,如下圖:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauYDN5YGOyEzYzkTM5EzYjFDMhdzN4MWY4QWY1IjNycTZfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.jpg)
二、建立一個報表rptDEPT.rdlc,顯示部門T_DPET的資料
三、嵌入Default.aspx中,寫在Default.aspx.cs中寫些基本代碼
運作效果:
OK,下面才是真正開始:
很多情況下(比如團隊開發),報表的資料源DataTable通常是由其它人寫好的,有些甚至不允許再做修改,報表開發人員隻能被動的接收資料,但是報表上未必需要顯示全部資料,以上面的報表為例,如果我們隻需要顯示"02技術部“的資料,如何處理?
這時報表參數就派上用場了:
四、添加報表參數
在Report Data面闆中,選中Parameters,右擊-->Add Parameter
為參數取名為DeptNo,并做一些設定,如下圖
五、為報表的Table添加Filters條件
上一步添加的參數需要與報表上的Table建立聯系,否則發揮不了作用。幸好每個Table都可以設定Filters表達式,來對資料進行篩選,見下圖:
六、在cs代碼中動态傳入參數
修改Default.aspx.cs的代碼,在運作時動态添加參數
最終運作結果:
很多報表中,資料的來源往往不止一個DataTable,下面我們模拟一個簡單的主從報表,主報表即為上面的rptDEPT(顯示部門資訊),子報表(也稱從報表)顯示部門下的員工清單(命名為rptEMP.rdlc)
七、建立員工報表rptEMP.rdlc
布局如下:
八、在rptDEPT.rdlc中插入子報表rptEMP.rdlc
子報表控件允許在一個報表中再插入另一個報表,如下圖:
然後在子報表上右擊,調出子報表屬性
設定加載哪個子報表
同時增加一個子報表參數
注:這裡增加一個跟主報表同名的參數DeptNo,同時設定其值為主報表rptDEPT的參數@DeptNo
九、修改Default.aspx.cs代碼
最終運作效果:
想想發生了什麼?
主報表rptDept與子報表rptEMP設定了相同的參數以及過濾條件,代碼給主報表rptDept傳遞了參數DeptNo後,主報表rptDept又把參數值傳遞給子報表rptEMP,最終二個報表都實作了資料篩選.