fineex2006 发表于 2015-8-20 17:03:00

rdl报表导出问题

当前显示的报表是这样的

最开始时,没有设置左侧动态输入参数时,点报表顶部的导出按钮能够正常导出。
后来根据需要,增加了两个可选的参数
点导出后图表区内容空白
我想是不是因为导出的时候选择的这个两个参数没有传入
但又不希望导出的时候再次选择参数,能否直接导出和报表显示的一模一样的内容。

frank.zhang 发表于 2015-8-20 17:53:00

您好,
您的这个问题,我理解是在增加参数后,导出没有能够正常显示。
您使用的是,前台JS的方式导出吗?
您是否方便提供一个能够重现这个问题的例子程序呢?这个问题,需要调试。我们重新新建项目,再重现这个问题,然后解决有点浪费时间。

fineex2006 发表于 2015-8-21 10:29:00

你好,你的理解不对
页面显示的报表中,有两个必填的参数,“大件”和“数量”,这个两个参数没有从js中传递过来,是在报表页面提供选择的。选定后,才能显示报表内容
而导出报表的时候,是重新加载了一次报表,然后重新获取数据(这个是根据前段时间的例子程序写的)。这样的话,报表中的那两个参数就没有值
导出excel部分代码
/// <summary>
      /// Excel导出
      /// </summary>
      protected void ExportExcel()
      {
            // Provide the page report you want to render.
            //GrapeCity.ActiveReports.PageReport _reportDef = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("/Reports/" + report + ".rdlx")));
            GrapeCity.ActiveReports.Document.PageDocument _reportRuntime = new GrapeCity.ActiveReports.Document.PageDocument(_reportDef);
            _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(Document_LocateDataSource);

            // Create an output directory
            System.IO.MemoryStream ms = new System.IO.MemoryStream();

            // Provide settings for your rendering output.
            GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings
            excelSetting = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings();
            excelSetting.FileFormat = GrapeCity.ActiveReports.Export.Excel.Page.FileFormat.Xls;
            excelSetting.MultiSheet = false;
            GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = excelSetting;

            //Set the rendering extension and render the report.
            GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension
            excelRenderingExtension = new
            GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension();
            GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();
            _reportRuntime.Render(excelRenderingExtension, outputProvider, excelSetting.GetSettings());

            Response.ContentType = "application/vnd.ms-excel";
            Response.AddHeader("content-disposition", "inline;filename=ActiveReport" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls");
            outputProvider.GetPrimaryStream().OpenStream().CopyTo(ms);
            Response.BinaryWrite(ms.ToArray());
            //Response.End();
            Context.ApplicationInstance.CompleteRequest();
      }

frank.zhang 发表于 2015-8-21 17:02:00

您好,
您的问题我们已经收到。目前的解决思路是,通过前台的js拿到参数,然后传递给后台。
我们有一篇博客里面的问题跟您的类似,但是使用的框架是MVC,您可以先参考下:
http://blog.gcpowertools.com.cn/post/2015/07/30/MVCExportParams.aspx

fineex2006 发表于 2015-8-24 15:53:00

你好,根据回复中的博客内容得到很大启发,但遇到一个问题
通过以下代码获取到选择的组合框内容,但如果一个报表有多个组合框,会将内容合并到一起
arr.push($(&quot;#parametersPane .parameterComboBox option:selected&quot; ).text());
例如,第一个组合框选择“中国”
第二个组合框选择“华北”
两个组合框都是parameterComboBox
本来希望是返回的参数组中有个两个参数
但实际是返回了一个“中国华北”

frank.zhang 发表于 2015-8-24 17:09:00

您好,
您可以尝试使用each来将每个ComboBox的内容添加,可以参考:
                    $(&quot;#parametersPane .parameterComboBox option:selected&quot;).each(
                           function () {
                             var t = $(this).text();
                             arr.push(t);
                           }
            );

frank.zhang 发表于 2015-8-31 18:02:00

您好,
距离这个问题的最后回复已经过去了一段时间,不知道这个问题您是否已经解决?

fineex2006 发表于 2015-9-1 11:21:00

你好,已经解决,谢谢

frank.zhang 发表于 2015-9-1 13:52:00

您好,问题已经解决,本帖关闭,如有其它问题,请开新帖。

为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢
http://gcdn.gcpowertools.com.cn/attachment.aspx?attachmentid=10062
页: [1]
查看完整版本: rdl报表导出问题