我是报道的新手,因此需要一些好的信息/资源来帮助我在我们的3层应用中设置一些报告。
我们目前拥有:UI(目前是ASP.Net MVC 2,未来还有winforms),业务逻辑和DAL(实体框架 - 仅限代码,即没有edmx)
BL有“经理”对象,用于选择和操纵实体。
现在我开始创建一个 .rdlc 报告,并选择一个包装BL管理器来检索相应记录的对象作为数据源。
现在我正在尝试添加一个前端来查看我的报告是否有效...我相信没有好的方法以纯MVC方式执行ReportViewer,所以我打算使用.aspx webform。我添加了ReportViewer控件,但我不确定如何将其连接到我的报告...
我原本希望实例化我创建的报告(它存在于BL中)并将其传递给查看者 - 但这似乎不是它应该工作的方式?
我已经google了,并且只找到了对ReportViewer的引用,无论是访问rdlc的URL还是本地文件。
(目前,假设我无法访问SSRS)
我看不到本地文件或网址如何帮助我。如果我使用本地路径直接指向rdlc,我不知道如何正确初始化ObjectDataSource - 它依赖于依赖注入并且具有很多依赖性。
如果我指向一个URL,我可能需要一个报告服务器 - 如果报告存在于那里,那么它就无法引用我的业务逻辑/ DAL - 这意味着我正在维护两种访问数据的方法平行 - 这对我来说似乎很糟糕。
我显然接近这个错误,但我发现的大多数教程都假设报告都存在于UI层中并且在webform本身上指定了数据源 - 这不是我在这种情况下所需要的。从理论上讲,我应该能够为BL提供一个winforms前端,让它以最小的努力生成完全相同的报告。
有人可以指出我正确的方向。
非常感谢
如果相关,我使用的是.Net 4,VS2010,MVC 2和IIS 7.
答案 0 :(得分:1)
正如我先前所说,我不做ASP,所以我不知道如何部署这些项目所使用的资源 在WinForms项目中,通常有两种用于部署报告的选项:
以下是说明这两个程序的代码。它是从my answer到previous question的摘录。
With rptVwr.LocalReport
'use this if the report is embedded in the project '
'the name is of the following format [ProjectNamespace].[ReportName] '
.ReportEmbeddedResource = "ObjectReport.SampleReport.rdlc"
'use the ReportPath if the report is stored somewhere else '
.ReportPath = "C:\Path\to\your\report" 'For demonstration purposes only'
End With
正如您所看到的,当嵌入报告时,您只需按照随附的评论中的说明分配报告。
我认为,根据项目的性质,您应该在“属性”窗口中将报告的构建操作设置为嵌入式资源。这样,就可以从部署的任何地方访问它。
编辑1
我查看了MSDN Library,发现this article涵盖了服务器报告。只需滚动到代码部分即可。我认为它有你想要的东西。
还有an article on CodeProject广泛涵盖了您的请求。
浏览后,您似乎必须执行以下操作:
ProcessingMode
属性设置为服务器。 ServerReport.ReportServerUrl
属性中输入报告的路径(网址)。 ServerReport.ReportPath
属性中输入报告的位置。
部署桌面应用程序时,请使用ReportViewer控件的 LocalReport 属性,并将 ProcessingMode 设置为 Local 。 部署基于Web的项目时,请使用ReportViewer控件的 ServerReoprt 属性,并将 ProcessingMode 设置为 Remote 。