C# ReportViewer報表 詳解

來源:互聯網
上載者:User

本文轉自:http://www.cnblogs.com/szytwo/archive/2012/04/12/2444145.html

C#報表控制項ReportViewer rdlc 例(1)

 

啟動VS2005建立一個表單項目,命名為TestProj

在左邊的表單內選擇“添加新資料來源”或在菜單上操作“添加新資料來源”:

選擇後出現對話表單,選擇“資料庫”,進入“下一步”:

本資料來源以SqlServer2000所提供的Northwind資料庫為例,因此在資料庫內選擇驅動程式為SqlServer,具體操作視所用資料庫而定(如果串連為Oracle,建議用Oracle所提供的ODP for .NET,地址:http://www.oracle.com/technology/global/cn/software/tech/windows/odpnet/index.html)。

 

選擇資料來源後,指定資料庫檔案,並進行測試,如果串連不通,請檢查你的軟體佈建。

進行下一步,至顯示出庫檔案內的表及視圖,然後開啟表,並選擇其中的Employees,選擇完成。

在資料來源視窗中顯示出所選擇表及表內的欄位,以備使用。

同時在資源管理員中,也可以看到新增加的資料檔案。

2       報表瀏覽器

在建立的表單內,放入報表瀏覽控制項:

此報表瀏覽控制項整合了報表查看及預覽列印的功能,可直接輸出至印表機,也可直接輸出至Excel檔案或PDF檔案,對於喜歡看Excel表格的客戶來說,這個報表控制項非常不錯。關於此報表的來源及台前幕後的各種說法,請自己查詢相關的網站。

3       建立報表檔案

選中報表瀏覽器控制項後,在控制項的右上方會出現一個小三角,點擊後,出現一個菜單,選擇“設計新報表”或在方案總管中添加一個新的報表檔案:

雙擊“報表專案”內的“表”,則設計空白表內產生一個表格,我們可以在表格內添加資料項目。

此報表的設計方式類似於MS以前的VB下報表設計環境。在報表設計師中,我將一份報表分為五個部分,從上至下為:報表標題區、欄位標題區、資料顯示區、合計及頁尾。如果將報表的設計形式顯示出頁首及頁尾,報表的形式會看得更清楚些:

選擇頁首及頁尾:

顯示結果:

現在開始設計報表:

在“頁首”區內放入一個文字框,將內容更改為“測試報表”,置中,字型放大加粗:

從資料來源視窗中選擇合適的列,用滑鼠拖到報表內的“詳細資料”表格上,資料會自動填入:

將設計的報表儲存後,返回報表瀏覽視窗,並為報表瀏覽器選擇我們設計的報表:

選中報表檔案後,菜單也有所改變:

再為此報表檔案指定資料來源,選擇資料來源:

確定,儲存檔案並運行測試檔案。

4       預覽

報表產生後預覽如下:

 

是不是很簡單?我們也可以對這個簡單的報表進行美化,當然,我加上美化的一些功能後,可能效果更差,但此處只是為了示範用法。

Ø         為資料加表格。

在報表設計師中,選擇需要加表格框的地區

然後在工具列中選擇邊框工具

加什麼樣的框線根據需要,此處我選擇“所有框線”。

看上去比原來的灰線能稍黑一些,在預覽時就能看出來了。

Ø         加列印時間顯示

加入一個顯示列印時間的文字框,在上面按右鍵,選屬性:

在“檔案框屬性”內,選擇“值”後面的運算式產生:

在運算式中選擇時間:

不要忘記運算式的前面一定要有一個“=”,如果沒有,手工加上一個。為了更符合我們的習慣,前面可以加個說明,如列印時間等,運算式的寫法就要稍做改變:還是以“=”開頭,後面加上“列印時間:”,再以“&”串連產生的Now函數即可得到我們想要的樣子。

Ø         為行加序號

為了示範,我將序號列加在了表格了最後列

加入一個新的列:

在顯示序號的列中輸入相關的值:

 

在此運算式的後面是Nothing,不是null,不要搞錯。

三項功能已經完成,預覽:

 

 

 

 

 

C#報表控制項ReportViewer rdlc 例(2)

 

比原來漂亮嗎?至少實用了一些。

使用RDLC報表(二)--使用自訂資料集

<!--[if !supportLists]-->1<!--[endif]-->建立表單

<!--[if !supportLists]-->2<!--[endif]-->建立資料來源

3<!--[endif]-->建立報表

 

新的資料報表已經產生,下面開始對資料來源進行設定。

<!--[if !supportLists]-->4<!--[endif]-->對報表自動產生的資料來源進行設定

 

 

 

 

 

 

選擇工具列 à 報表 à 資料來源,選中所要修改的資料來源後,用“重新命名”對其進行修改,如myds。

修改完成後,確定退出此視窗。選中報表設計師內的表格,顯示內容。將表格的資料集名稱更改為上面修改的名稱。如果一個報表檔案內只有一個資料來源,則表格內的資料值可直接寫為“=Fields!欄位.Value”的格式,如果包含多個資料來源,則要對此欄位的取值進行指定,如“=(Fields!欄位.value,“資料集名稱””。<!--[if !supportLists]-->5<!--[endif]-->手動產生資料來源手動產生的資料集內必須包含報表檔案內設計的欄位名稱,否則會運行出現錯誤產生資料集:

       /// <summary>

        /// 報表執行操作

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void button1_Click(object sender, EventArgs e)

        {

            //取得資料集

            string connstring = "Data Source=.;Initial Catalog=Northwind;Integrated Security=True";

            System.Data.SqlClient.SqlConnection conn1 = new System.Data.SqlClient.SqlConnection(connstring);

            System.Data.SqlClient.SqlCommand command1 = new System.Data.SqlClient.SqlCommand("select * from customers", conn1);

            System.Data.SqlClient.SqlDataAdapter ada1 = new System.Data.SqlClient.SqlDataAdapter(command1);

            DataSet c_ds = new DataSet();

            try

            {

                conn1.Open();

                ada1.Fill(c_ds);

            }

            finally

            {

                conn1.Close();

                command1.Dispose();

                conn1.Dispose();

            }

 

            //為報表瀏覽器指定報表檔案

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

            //指定資料集,資料集名稱後為表,不是DataSet類型的資料集

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

            this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("myds", c_ds.Tables[0]));

            //顯示報表

            this.reportViewer1.RefreshReport();

        }

運行後的資料顯示:

posted on 2006-04-21 19:42 龍少爺 閱讀(1189) 評論(8)  編輯 收藏 引用 網摘 所屬分類: RDLC報表使用

 

使用RDLC報表(三)--向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、運行工程,在文本輸入框內輸入資料,按下按鈕,資料是不是已經傳入報表了?

posted on 2007-03-06 14:41 龍少爺 閱讀(393) 評論(8)  編輯 收藏 引用 網摘 所屬分類: RDLC報表使用

 

使用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.