RDLC子報表


本文轉載自:http://www.cnblogs.com/wjbobo/archive/2012/03/13/2362115.html

RDLC子報表主要設置:

    1 .先添加報表控件,在控件中拉入報表的表格Table 控件,在報表工具欄中拖入子報表控件到Table的某個單元格.

    2 .在子報表控件上右鍵子報表屬性,選擇選項卡常規-名稱 添加子報表的名稱 可自定義,將此報表用做子報表       中添加 已存在的報表名稱,例如SaleMonthReport 不需要加.rdlc 后綴名。   

   3.選擇參數選項卡,添加參數(參數可以使主報表的數據集內容,參數等) 名稱可以自定義(注意:自定義的名稱必須和子報表參數同名,並且在子報表添加 參數后 在測試,否則會報 本地報表呈現錯誤,value 值不能為Null的錯誤),值為數據集值、參數、內置字段、固定值 等。

到此 基本子報表配置完成。后面通過代碼注冊子報表   

  4.在aspx后台代碼中 其他代碼和普通代碼類似,主要注冊主報表的 SubReportProcessing 事件

ReportViewer1.LocalReport.SubreportProcessing += new     SubreportProcessingEventHandler(LocalReport_SubreportProcessing);  

   5.在LocalReport_SubreportProcessing 中添加子報表的數據源

   這里通過 string fname=e.Parameters["fname"].Values[0]; 取得子報表參數值,這里根據參數值 取得報表的數據(還有一種方法是這里不適用參數取子報表的數據,將所有的數據全部取出,然后報表會根據參數自動顯示符合參數的數據內容,當數據量龐大時,效率不高) .

Datatable dtDetail=new class1().getModelByName(fname); //這個最好寫在外面,為什么大家應該知道,因為有多少條主報表數據,子報表就會循環多少次。

 e.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("dtDetail", dtDetail)); //添加子報表的數據

 

 

完整代碼:

ReportViewer1.Visible=true;         

ReportViewer1.LocalReport.DataSources.Clear();            

ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dtInfo));  

ReportViewer1.LocalReport.SubreportProcessing += new     SubreportProcessingEventHandler(LocalReport_SubreportProcessing);           

ReportViewer1.LocalReport.Refresh();

 

 

 void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)         {

  string fname=e.Parameters["fname"].Values[0];

  Datatable dtDetail=new class1().getModelByName(fname);

  e.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("dtDetail", dtDetail));

}

 

一路走來,一切都在改變,唯一不變的是心中的那份執着.

 


免責聲明!

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



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