繁体   English   中英

VS 2008报表控件中来自SQL报表服务的报表查看器

[英]Report viewer from SQL reporting services in VS 2008 report control

VS 2008报表控件中来自SQL报表服务的报表查看器如果我在VS 2008中创建新报表,则它们的扩展名为.rdlc并可以正常工作。

我有一些在SQL报表服务中使用的报表。 扩展名为.rdl,并希望使其与VS 2008一起使用。

我将rdl文件和.rdl.data文件复制到VS 2008(SP1)项目中,但是当我在控件中选择报表时,它看不到该文件(我假设它正在寻找.rdlc文件)

我尝试将文件重命名为.rdlc并加载文件并得到

报表定义具有无效的目标名称空间“ http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition ”,该名称空间无法升级。

我看到了这个http://social.msdn.microsoft.com/Forums/en-SG/vsreportcontrols/thread/65cefd7d-00d8-4be6-a53a-7e34dfd7eb2b

我在这里看到http://www.gotreportviewer.com/它说:“ RDL文件与ReportViewer控件运行时完全兼容。但是,RDL文件不包含一些信息,ReportViewer控件的设计时需要这些信息来自动生成数据绑定代码。通过手动绑定数据,可以在ReportViewer控件中使用RDL文件。”

但是有关如何手动绑定数据的链接已损坏。

关于如何手动重新绑定数据的任何想法? 还是让这些报告与2008控件一起使用的更好方法?

不幸的是,SSRS 2008中的服务器版本* .rdl与本地版本* .rdlc文件兼容。

基本上,您所能做的就是

  • 要么直接在服务器上使用.RDL(使用ReportViewer控件中的“远程呈现”报告)

  • 基本上从头开始将整个报告重新创建为本地报告

这真是令人难以置信-但不幸的是,这是事实.....让我们希望使用.NET 4,Visual Studio 2010会更好。

如果您不需要向下钻取之类的高级功能,并且不能使用VS2010,则可以这样做(我可以这样做):

  • 从VS2010安装新的reportviewer.exe(我猜是beta2或更高版本);
  • 将版本10.0的ReportViewer的Common / WebForms程序集添加到引用中;
  • 手动解析RDL XML结构以获取数据源和/或查询SQL(非常容易);
  • 使用它来填充LocalReport.DataSource;
  • 执行LocalReport.Render(“ PDF”)以获得PDF输出(用于生成PDF响应的ActionResult代码很容易找到);
  • 在页面和iframe上放置一个“查看”按钮;
  • “查看”按钮(通过JavaScript)会将iframe src属性分配给返回上述PDF内容的网址-并将在iframe中为报告提供漂亮的PDF预览;
  • 或者,可以使用jQuery Media插件呈现具有相同结果的PDF对象标签;
  • 另外,我解析RDL XML参数并将其显示在页面上,并将其传递给“生成报告” URL-我得到了自己的漂亮UI控件,以获取好处。
  • 此外,我还有自己的“导出”按钮,它们调用LocalReport.Render(format)并提供具有正确MIME类型(即Excel,Word,PDF和我的手动CSV)的输出-导出在新版本的报表查看器中得到了改进。

上面的列表可能看起来很吓人,但是我花了仅2天的时间就在ASP.NET MVC中破解了完整的解决方案,而且只有大约300行代码,包括我自己的CSV代。

一旦从XML查询获得DataTable / DataSet,绑定数据的代码就非常简单:

        var reportDataSource = new ReportDataSource();
        reportDataSource.Name = name;
        reportDataSource.Value = ds.Tables[0];
        localreport.DataSources.Add(reportDataSource);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM