rdlc(三,四)

來源:互聯網
上載者:User

 

使用RDLC報表(三、四)

技術類文章   2009-10-13 15:17   閱讀4   評論0   字型大小: 大大  中中  小小

使用RDLC報表三:

在使用報表向客戶展示結果資料時,即時的在報表中顯示某些特定的資料是必需的,如:顯示的部門、列印的日期等。本文只簡單的示範向報表內傳入一個字元值。如有其它問題,歡迎討論。

1、建立一個工程TestReport,一個Form表單,放入一個TextBox、一個Button按鈕,再放入一個ReportViewer控制項。

2、在ReportViewer上選擇建立一個報表

3、在開啟的報表設計師中,選擇工具列的“報表”中的“報表參數”,新加一個參數,名稱為content,資料類型為string,確定。

4、在報表設計師的頁面上放入一個文字框,在文字框上按滑鼠右鍵->屬性,在“文字框屬性”視窗中,選擇“常規”選項卡內下部的“值”後面的“編輯運算式”按鈕(就是那個Fx),在此視窗內,左下框內選擇參數,在右下框將會出現在上一步中設定的參數,雙擊此參數,在上面的框內將出現所需要的運算式:=Parameters!content.Value。儲存此報表。報表預設名稱為Report1.rdlc。

5、在Form表單內雙擊按鈕,編寫如下代碼:

            this.reportViewer1.LocalReport.ReportEmbeddedResource = "TestReport.Report1.rdlc";

             ReportParameter rp = new ReportParameter("content", this.textBox1.Text);

            this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp });

            this.reportViewer1.RefreshReport();

6、運行工程,在文本輸入框內輸入資料,按下按鈕,資料是不是已經傳入報表了?

 

 

 

 

 

使用RDLC報表四:

本文內以MSServer內建Northwind庫檔案內的Customers及Orders這兩個表為例,建立兩個報表檔案,在查詢得出Customers的表資料後,點擊此表內的CustomerID資料,報表將轉入至下一個報表,並顯示與之相關的Orders的資料,即VS中所謂的切入式報表。

1、開啟一個工程,並建立一個From,放入一個Button及一個ReportViewer控制項。

2、在工程內建立一個資料來源,串連到Northwind庫檔案,顯示Customers及Orders這兩個表

3、建立一個報表檔案,並以表格的形式來顯示資料,將Customers表內的CustomerID、CompanyName及Address三個欄位放入,形成一份有表頭及資料的簡單報表,並將此報表儲存命名為customerReport

4、再建一個報表檔案,與customerReport相同,也以表格的形式來顯示報表,將Orders內的OrderID、CustomerID、ShipName及OrderDate四個欄位放入表格內,報表儲存為orderReport

5、orderReport的資料來源根據主報表customerReport的資料來確定資料來源的資料,查看錶格的資料集名稱,我的顯示為NorthwindDataSet_Orders,也可以自己另建一個,具體方法見我的《RDLC報表(二)》

6、再開啟customerReport報表,將CustomerID設定成為可點擊的索引欄位,以便轉入下一個報表。選擇CustomerID欄位,按滑鼠右鍵,在”文字框屬性“視窗中,選擇”導航“選項卡,在下面的”超連結“中選擇”跳至報表“,在報表名稱中選擇”orderReport“,再按下後面的”參數...“按鈕,輸入一個參數名稱,如customerid,參數值選擇=Fields!CustomerID.Value。為了與其它資料相區分,可以將此列資料根據自己的習慣改變顏色或加底線

7、在orderReport中,設定一個報表參數,與CurtomerReprot中的名稱相同,以接收父表中傳入的參數

8、建立兩個取得資料的方法,一個從Customers中取得資料集,另一個從Orders中取得資料集,且帶參數。此兩個方法可以自己編寫類庫來實現,也可以在VS的資料集內添加。為了示範方便,我直接使用了Customers的GetData(),並編寫了一個Orders的GetDataByCustomerID(@cid)的方法。

9、在From的Button中編寫如下代碼:

        private void button2_Click(object sender, EventArgs e)

        {

             NorthwindDataSet.CustomersDataTable dt1 = new NorthwindDataSetTableAdapters.CustomersTableAdapter().GetData();

            this.reportViewer1.LocalReport.ReportEmbeddedResource = "TestReport.customerReport.rdlc";

            this.reportViewer1.LocalReport.DataSources.Clear();

            this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("NorthwindDataSet_Customers", dt1));

            this.reportViewer1.RefreshReport();

         }

10、使用報表的Drillthrough事件,當選擇了切入項時會發生此事件,給下一個報表取值,代碼如下:

        private void reportViewer1_Drillthrough(object sender, DrillthroughEventArgs e)

        {

             LocalReport lp = (LocalReport)e.Report;

            string customerid = lp.GetParameters()["customerid"].Values[0].Trim();

             lp.DataSources.Clear();

             lp.DataSources.Add(new ReportDataSource("NorthwindDataSet_Orders",

                new NorthwindDataSetTableAdapters.OrdersTableAdapter().GetDataByCustomerID(customerid)));

         }

 

運到結果:

運行第一份報表:

切入後運行第二份報表:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.