我如何集成ReportViewer
到 asp.net MVC 项目中?
我想添加MVCProject.Model
命名空间的业务对象。ReportViewer
允许 DataSet 的业务对象。
是否可以选择其他数据源,例如LinqDataSource
或 Direct object to LINQ-to-SQL class objects?
在 MVC 项目中添加报告的最佳解决方案是什么?
我如何集成ReportViewer
到 asp.net MVC 项目中?
我想添加MVCProject.Model
命名空间的业务对象。ReportViewer
允许 DataSet 的业务对象。
是否可以选择其他数据源,例如LinqDataSource
或 Direct object to LINQ-to-SQL class objects?
在 MVC 项目中添加报告的最佳解决方案是什么?
我有一个未经测试但可能有效的想法。1- 将报表查看器控件放置在标准 ASP.Net Web 表单页面中(例如 ReportViewer.aspx) 2- 在 MVC 下,添加一个引用此 ReportViewer.aspx 页面的 iframe 3- 使用会话或查询字符串将参数传递给页面
让我知道这个是否奏效
另一种方法是在报告服务器上生成报告,然后将其作为 PDF 流式传输到 mvc 应用程序。
会很艰难 首先,您需要 ViewState,因此您需要在常规 WebForms 页面中托管报表。不过这还不错——WebForms 和 MVC 可以很好地并行工作。
困难的部分是绑定到真正的 IEnumerable 对象,而不是那些虚假的对象数据源。
第一步是建立报表数据模型。您可以在代码中使用查询来执行此操作,无论您想要什么。像这样(但显然更大)的结构是典型的:
public class ReportSource
{
public Floogle[] Floogles { get; set; }
}
public class Floogle
{
public Doodad[] Doodads { get; set; }
public string Text { get; set; }
}
public class Doodad
{
public int Number { get; set; }
}
诀窍是在报表中使用 BindingSource 控件并将 DataSource 属性设置为typeof(ReportSource)
- 是的,数据源是报表模型的类型。
在设计报表时,您不会获得很多丰富性,但您可以做到。
就第三方报告解决方案而言,我们发现 Telerik 是最佳选择。
我有一个小项目,我在 codeplex 上抛出了一个带有报告的 mvc 项目。
http://mvctaskmanagement.codeplex.com/
基本上,因为我在 XP 机器上进行开发,所以我的 Web 表单必须被推送到一个单独的项目中。因为我有一个服务层项目,所以我把它卡在那里。
从那里我通过 ajax 帖子调用我的报告,将参数拍摄到报告页面,然后将其传递到用于生成预览的同一服务层。
祝你好运!