在报表控件 ActiveReports 中页面报表动态绑定数据源实现方法博客中,我们介绍了可通过LocateDataSource来对【Dataset Provider】进行动态数据源绑定。在读者反馈中,有人询问,如果我有子报表,请问该如何动态绑定数据源呢?
答案是肯定的,我们可以在已有demo基础上,扩展出子报表动态绑定数据源的办法。且原理相同,只不过没有通过PageDocument的LocateDataSource,而是通过WebViewer1.LocateDataSource 事件来绑定数据源。
GrapeCity.ActiveReports.PageReport report1 = new GrapeCity.ActiveReports.PageReport(
new System.IO.
FileInfo(Server.MapPath("PageReport1.rdlx"))); WebViewer1.LocateDataSource += WebViewer1_LocateDataSource; WebViewer1.Report = report1; void WebViewer1_LocateDataSource(object sender, GrapeCity.ActiveReports.
LocateDataSourceEventArgs args) { if (args.DataSourceName == "DataSource2") { if (args.DataSetName == "DataSet2") { args.Data = GetData2(); } } if (args.DataSourceName == "DataSource1") { if (args.DataSetName == "DataSet1") { args.Data = GetData(); } } }
demo下载: