2015年2月4日 星期三

[C#] reportViewer動態切換rdlc

還是一篇鳥蛋教學
請小心服用

若是要按某個按鈕後將reportViewer換成另一個rdlc(連dbDataSet一起換掉)

則在Click方法中寫入


// 這裡Reset reportViewer除了斷開(?)它和rdlc檔的連結,還有資料來源(dbDataSet/DataSources)的連結
reportViewer1.Reset();
// 如果是使用TableAdapters則在這裡定義
dbDataSetTableAdapters.userinfoTableAdapter ds = new dbDataSetTableAdapters.userinfoTableAdapter();
// 取得TableAdapters資料並塞成DataTable(有助於你要把它塞成資料集時系統好辦視型態)
DataTable dt = ds.GetData();
// 將要指定給reportViewer的rdlc路徑給它
// 使用ReportEmbeddedResource後rdlc名稱寫成專案名稱.XXX.rdlc即可不用寫完整路徑
reportViewer1.LocalReport.ReportEmbeddedResource = "Demo.Report2.rdlc"; 
// 指定資料集,名稱需與rdlc中的相同
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dt));
reportViewer1.RefreshReport();

比較重要的是要
1.reset reportViewer
2.塞新的rdlc路徑給reportViewer
3.因為reset後DataSources也會清空也要塞新的DataSource(就不一定是TableAdapter
4. Refresh reportViewer

若你的DataSource是BeanList
可以參考這篇

沒有留言:

張貼留言