RDLC報表總結


這2天糾結的報表基本上已近完成大部分功能。現在總結一下自己近期的學習成果

首先制作微軟RDLC報表由以下三部分構成:1.制作自己的DateSet集合(就是報表的數據集);2.制作自己的報表文件.rdlc文件,用於畫做報表樣式,里面有微軟自帶的導出和打印功能,其實就為了少做這2個功能做少部分報表完全還不如自己生成報表靈活。制作顯示報表的前台頁面aspx文件,基本上就是插入一個ReportViewer然后關聯上面的.rdlc文件,注意別忘了更新數據源和插入ScriptManager.

下圖是我這是這幾天來做的,但基本都是建立這3個文件,網上可以找很多教程可以學習,

這些是我主要參考的網站

http://www.cnblogs.com/JamesLi2015/archive/2010/01/30/1660086.html

http://www.cnblogs.com/lauyee/archive/2010/07/26/1783694.html

http://wenku.baidu.com/view/364f5048c850ad02de8041f5.html

http://www.cnblogs.com/lauyee/archive/2010/07/18/1780124.html

好吧,開始做了,前面都很簡單:怎么做一個DataSet,怎么繪制自己的RDLC,這些東西查查什么是數據集,什么是表頭,行組,列祖就可以。還有報表里面的參數也可以傳入。用LocalReport.SetParameters()方法。

難點發生在要動態構造一個DataSet,網上剛開始給了好多方法,但是自己老是不成功,后來總結出2點

1. 參照的數據集名稱錯誤,假如你的RDLC參照數據集DateSet1,在自動定義新的數據集時候

ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("DataSet1", ds.Tables[0]));,

必須把名字標記成DateSet1,否則會無法識別。還有新的數據集字段必須和原有字段名稱一致。

2. 這個最悲劇,竟然是自己的的SQL語句寫錯了,汗顏不說了...

看看源代碼和最后運行圖示

[csharp]   view plain copy
  1. protected void Button1_Click(object sender, EventArgs e)  
  2. {  
  3.     //先引用源報表並修改參數  
  4.       ReportParameter rp = new ReportParameter("content""庫房");  
  5.     this.ReportViewer1.LocalReport.ReportPath = AppDomain.CurrentDomain.BaseDirectory + "Report4.rdlc";  
  6.     this.ReportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp });  
  7.   
  8.     string connstring = "Data Source=192.168.1.111;Initial Catalog=SameWayAgile_4_14;Integrated Security=True";  
  9.     System.Data.SqlClient.SqlConnection conn1 = new System.Data.SqlClient.SqlConnection(connstring);  
  10.     System.Data.SqlClient.SqlCommand command1 = new System.Data.SqlClient.SqlCommand(  
  11.     "SELECT GoodsName AS 商品名稱, ABCTypeName AS ABC類, MiddleTypeName AS 中類,  GoodsTypeName AS 大類, TotalValue AS 金額, ActualQuantity AS 數量 FROM Part_GoodsView", conn1);  
  12.     System.Data.SqlClient.SqlDataAdapter ada1 = new System.Data.SqlClient.SqlDataAdapter(command1);  
  13.     DataSet ds = new DataSet();  
  14.     try  
  15.     {  
  16.         conn1.Open();  
  17.         ada1.Fill(ds);  
  18.         ds.DataSetName = "DataSet1";  
  19.     }  
  20.     catch (Exception ex)  
  21.     {  
  22.         string ss = ex.Message;  
  23.     }  
  24.   
  25.     finally  
  26.     {  
  27.         conn1.Close();  
  28.         command1.Dispose();  
  29.         conn1.Dispose();  
  30.     }  
  31.   
  32.       
  33.     if (ds.Tables[0] != null)  
  34.     {  
  35.         ReportViewer1.LocalReport.DataSources.Clear();  
  36.         ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("DataSet1", ds.Tables[0]));  
  37.     }  
  38.     ReportViewer1.LocalReport.Refresh();  
  39. }  

今天做了一個變態的報表,剛開始覺得不能實現,后來了解報表文件特性還是可以實現的,就是矩陣里面嵌套矩陣。哈哈

好了插圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM