我正在使用ASP.Net页面,该页面使用https://www.drupal.org/sandbox/toegristle/2821859控件显示来自远程SSRS服务器的报告。在我们部署了一份不需要/接受任何参数的新报告之前,它一直没有问题。在渲染这些报告时,报告的第一页可以正常呈现,但是当您切换到另一个页面时(使用ReportViewer中的控件),您会收到错误消息,"一个或多个数据源缺少凭据"。
这就是ReportViewer的配置方式......
{{1}}
如果我将AsyncRendering更改为true,则在呈现报告的第一页时将显示错误。
当渲染一个没有任何参数的报告时,我与参数有什么不同吗?
答案 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控件。为了解决这个问题,我刚刚在我的基页类中添加了一个属性,这使我可以禁用更改跟踪功能,因为无论如何都不需要此页面。