渲染SSRS报告,没有参数,使用ReportViewer控件失败

时间:2017-06-15 18:38:21

标签: c# asp.net reporting-services reportviewer

我正在使用ASP.Net页面,该页面使用https://www.drupal.org/sandbox/toegristle/2821859控件显示来自远程SSRS服务器的报告。在我们部署了一份不需要/接受任何参数的新报告之前,它一直没有问题。在渲染这些报告时,报告的第一页可以正常呈现,但是当您切换到另一个页面时(使用ReportViewer中的控件),您会收到错误消息,"一个或多个数据源缺少凭据"。

ReportViewer

这就是ReportViewer的配置方式......

{{1}}

如果我将AsyncRendering更改为true,则在呈现报告的第一页时将显示错误。

当渲染一个没有任何参数的报告时,我与参数有什么不同吗?

2 个答案:

答案 0 :(得分:0)

最好删除

this.SetRerportParameterValues();

因为这似乎无能为力。

而且,您确定此非常报告中没有任何子报告吗?如果是,您可能需要检查其查询/数据源等。

修改

有一些known issues with the reportviewer控件。 在设计报告时,我个人认为reportviewer只是基本的查看器,因为从用户的角度来看,由于一些问题,reportViewer不是最好的选择。
因此,为了向用户显示报告数据输出,对于后面的代码,convert report to PDF on the fly是更好的选择,并向用户显示PDF。

答案 1 :(得分:0)

我仍然不确定为什么会这样,但我确实找到了原因并且能够解决它。

我的ASPX页面继承自自定义页面基础(继承了System.Web.UI.Page)。基页的初始化循环遍历页面上的所有HTML控件,并将一个简单的处理程序附加到change事件。事件处理程序只需在修改值时将控件添加到列表中。这个事件处理程序非常简单,看起来像这样......

 private void HtmlCtrl_ServerChange(object sender, EventArgs e)
    {
        HtmlControl ctrl = sender as HtmlControl;
        if (ctrl != null)
        {
            this.changedControls.Add(ctrl);
        }
    }

出于某种原因,我仍然不确定为什么,当您尝试导航到零参数的报表的第二页时,此功能搞砸了ReportViewer控件。为了解决这个问题,我刚刚在我的基页类中添加了一个属性,这使我可以禁用更改跟踪功能,因为无论如何都不需要此页面。