我有以下问题。我制作了一个为我的一个客户生成 rdlc 报告的应用程序。我使用 TableAdapters 来填充我在这些报告中使用的 DataTables。问题是我的客户有一个新数据库,他希望能够使用该应用程序从旧数据库和新数据库生成报告。我认为可以更改我的 TableAdapters 使用的连接,以便他们只从我的客户端选择的数据库中获取数据(两个数据库具有相同的架构),但我被告知无法做到这一点。那么是否可以更改 rdlc 报告使用的 DataTable?我怎么解决这个问题
问问题
7830 次
2 回答
3
您可以使用以下代码在运行时将任何数据表分配给 rdlc。
DataTable dtTest =obj.SelectDepartment(1);//Here I am selecting the data from DB
this.reportViewer1.RefreshReport();
reportViewer1.Visible = true;
ReportDataSource rds = new ReportDataSource();
reportViewer1.Reset();
reportViewer1.ProcessingMode = ProcessingMode.Local;
LocalReport rep = reportViewer1.LocalReport;
rep.Refresh();
rep.ReportEmbeddedResource = "Report.rdlc";//Provide full path
rds.Name = "DataSet1_tblAdapter";//Provide refrerence to data set which is used to design the rdlc. (DatasetName_TableAdapterName)
rds.Value = dtTest;
rep.DataSources.Add(rds);
this.reportViewer1.RefreshReport();
于 2012-04-16T06:16:59.763 回答
1
当然,动态更改报告的数据源应该没问题
rptView.LocalReport.ReportPath = Server.MapPath("MyReportName")
rptView.LocalReport.DataSources.Add(New ReportDataSource("DataSource", "ObjectSource"))
对不起,代码是 VB.net,我知道你的问题被标记为 C#,但它应该足够相似
编辑:
如果你想要一些参数
dim listOfParams = new List(of ReportParameter);
listOfParams.Add(new ReportParameter("Param1", myValue.toString()))
listOfParams.Add(new ReportParameter("Param2", myOtherValue.toString()))
Me.rptView.LocalReport.GetParameters(listOfParams)
只是直接编码,所以它很可能是 C# 和 VB.net 的混合体
于 2012-04-12T13:08:35.560 回答