This is Header

ReportViewer作弊条

在MVC项目中使用ReportViewer

创建WebForm,向Webform中添加ReportViewer控件,通过CodeBehind设置报表参数并填充数据,测试通过后在MVC的View中iFrame新创建的WebForm

在MVC项目中使用使用DbContext作为ReportViewer的数据源

在MVC项目内部新建Report.rdlc后,发现不能选择Object(DbContext)作为数据源。网上找到的一个解决办法是:在同解决方案中新建另一个非Web的项目,如WinForm项目。在WinForm项目添加对Web项目及其他相关项目的引用,之后用向导创建rdlc,创建时会看到选择数据源的选项中有Object选项了,"下一步"后就可以选择相应的对象作为数据源,如MyProject.Models.Product,创建好数据源,记下设定的数据集(DataSet)的名称(如dsProduct)。保存。将在此生成的rdlc文件复制到主Web项目中进行报表设计

以下是生成并填充报表数据的代码,注意代码中用到的数据源名称必须与之前创建RDLC的时候所记下的DataSet名称一致,即下面例程中的dsProduct:

                string path = Path.Combine(Server.MapPath(@"\Rdlc"), "MyReport.rdlc");
                ReportViewer1.ProcessingMode = ProcessingMode.Local;
                ReportViewer1.LocalReport.ReportPath = path;
                MyProductBusiness business = new MyProductBusiness();
                List<Product> records = business.Search().Take(100).ToList();
                ReportDataSource rptDataSource = new ReportDataSource("dsMyProduct", records);
                ReportViewer1.LocalReport.DataSources.Add(rptDataSource);

ReportViewer控件版本为V11.x.x.x,但是项目添加引用"Microsoft.ReportViewer.Webform.dll"时只有V10.x.x.x和V9.x.x.x显示在列表中

用Nuget,找到MicosoftReportViewerWebForms_v11并添加,Nuget显示版本为1.0.1,但是这只是此Nuget包的版本,实际ReportViewer的版本是11.0.0.0

PM> Install-Package MicosoftReportViewerWebForms_v11

使ReporViewer在Webform中的高度和宽度为100%

<rsweb:ReportViewer ID="ReportViewer1" runat="server" Height="100%" Width="100%" AsyncRendering="False" SizeToReportContent="True" ......>
</rsweb:ReportViewer>

 

posted @ 2016-05-19 13:01  Gothic_Revival  阅读(1390)  评论(0编辑  收藏  举报

This is footer