RDL(C) Report Design Step by Step 2: SubReport

來源:互聯網
上載者:User

    前兩天,有網友在Blog上評論要求將子報表的配置貼出來,由於這兩天有些別的事情,所以耽擱了;另外,自己也比較懶,有些東西明明應該早就寫出來的。呵呵,說聲“對不起”,然後還有“謝謝你”!

    OK,這篇隨筆就講一下RDLC報表中子報表SubReport的實現步驟。

    首先來看一下,本文的樣本的運行結果。


圖1 主子報表樣本運行結果

    主子報表的資料來源顯然也應該是兩個具有主子關係的資料表,本文樣本依然使用Northwind資料庫的訂單和訂單明細表作為資料來源。

    1、在Visual Studio 2005中建立一個Windows應用程式RDLCSR。

    2、在項目中添加資料來源,資料來源並不一定用來為報表提供資料(當然Visual Studio 2005提供的操作非常方便),主要是在報表設計時可以方便向報表中進列欄位拖曳。添加資料來源意味著在項目中添加了一個資料集Orders.xsd檔案,當報表的資料不是來源於關係型資料庫(如Flat Files或Web Services等)時,我們可以自己定義一個xsd檔案作為報表設計時的資料來源,而在程式中重新為報表載入資料。

    3、在項目中添加報表rptOrder.rdlc和rptOrderDetail.rdlc分別作為樣本的主報表和子報表。

    4、為子報表rptOrderDetail.rdlc添加參數pOrderId,指定其資料類型為Integer,然後2進行子報表的布局設計。


圖2 子報表rptOrderDetail.rdlc布局設計

    5、為主報表rptOrder.rdlc進行3所示的布局設計。


圖3 主報表rptOrder.rdlc布局設計

    6、在主報表rptOrder.rdlc的子報表控制項上單擊右鍵,使用“屬性”菜單調出“子報表屬性”對話方塊。在“常規”選項卡中的子報表下拉式清單中選擇rptOrderDetail;切換到“參數”選項卡,在“參數名稱”列中,系統會自動檢測到步驟4中定義的子報表的參數pOrderId,並在“參數值”列中指定參數值為=Fields!訂單ID.Value。

    7、在子報表rptOrderDetail.rdlc中選擇表格控制項,使用右鍵菜單“屬性”調出“表屬性”對話方塊,在“篩選器”選項卡中進行入圖4的設定。這主要是為了在訂單明細中篩選當前訂單的詳細資料,當然這一步驟可以在程式中用代碼指定。


圖4 在子報表rptOrderDetail.rdlc中指定篩選器

    好了,至此報表布局的設定已經完成了,下面需要在應用程式中顯示報表並給主子報表分別提供資料。

    8、在表單frmMain中添加ReportViewer控制項rptMain,並在rptMain的“ReportViewer任務”中選擇報表rptOrder.rdlc。

    9、在表單frmMain中添加圖5所示的代碼:


圖5 表單frmMain的代碼

    可見,必須對ReportViewer控制項的LocalReport對象添加SubReportProcessing事件,而該事件主要也就是為了子報表提供資料。

    現在就可以運行應用程式查看結果了,6所示。


圖6 樣本運行結果(未給列表指定分組)

    在圖6中,我們看到出現兩個訂單顯示在同一頁面,而在實際應用中,我們可能希望,每個頁面

上只顯示一條訂單。此時,可以進行以下的設定:

    10、在主報表rptOrder.rdlc中,挑選清單控制項,右鍵“屬性”彈出“列表屬性”對話方塊,在“常規”選項卡中,單擊按鈕“編輯詳細資料組”彈出“分組和排序屬性對話方塊”並進行7所示的設定。


圖7 為列表指定分組並設定分頁顯示選項

    事實上,主子報表和鑽研報表有著相似的地方,所以如果看了這篇隨筆有什麼不明白的地方,可以參看一下我的另一篇隨筆RDLC Report Step by Step 1: DrillThrough Report。

    Demo下載

   

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.