如果存在报告以防止 rsItemNotFound,如何检查 ReportViewer?
How to check in ReportViewer if a report exists to prevent rsItemNotFound?
我正在按照以下方式将报告加载到我的 ReportViewer 10.0 中:
MyReportViewer.ServerReport.ReportPath = "/My.Report.Folder/DoesNotExist";
// The following call throws a ReportServerException ("...rsItemNotFound...")
var requestedParameters = MyReportViewer.ServerReport.GetParameters();
var filledParameters = GetFilledParameters(requestedParameters);
MyReportViewer.ServerReport.SetParameters(requestedParameters);
MyReportViewer.ServerReport.Refresh();
这工作正常,除非报告不存在。在这种情况下,GetParameters()
调用将失败并显示 ReportServerException
和一条消息:
The item '/My.Report.Folder/DoesNotExist' cannot be found. (rsItemNotFound)
当然我可以在此处使用 try...catch
块来阻止这种情况,但我宁愿明确检查报告是否存在。有没有办法使用 ReportViewer
组件来做到这一点?或者我需要连接到 SSRS 网络服务吗?
我浏览了 MyReportViewer.ServerReport
的方法和属性,但没有发现任何有用的东西。我还检查了 this related question,但它实际上不在 ReportViewer 控件的上下文中。
我对其他答案持开放态度,但在此之前,这是我目前的解决方法:
try
{
var requestedParameters = MyReportViewer.ServerReport.GetParameters();
var filledParameters = GetFilledParameters(requestedParameters);
MyReportViewer.ServerReport.SetParameters(requestedParameters);
MyReportViewer.ServerReport.Refresh();
}
catch (ReportServerException exception)
{
if (!exception.Message.Contains("rsItemNotFound"))
{
throw;
}
// Else... ReportViewer will show "rsItemNotFound" error.
// Or you can do something fancy in your app here, I suppose :-)
}
我正在按照以下方式将报告加载到我的 ReportViewer 10.0 中:
MyReportViewer.ServerReport.ReportPath = "/My.Report.Folder/DoesNotExist";
// The following call throws a ReportServerException ("...rsItemNotFound...")
var requestedParameters = MyReportViewer.ServerReport.GetParameters();
var filledParameters = GetFilledParameters(requestedParameters);
MyReportViewer.ServerReport.SetParameters(requestedParameters);
MyReportViewer.ServerReport.Refresh();
这工作正常,除非报告不存在。在这种情况下,GetParameters()
调用将失败并显示 ReportServerException
和一条消息:
The item '/My.Report.Folder/DoesNotExist' cannot be found. (rsItemNotFound)
当然我可以在此处使用 try...catch
块来阻止这种情况,但我宁愿明确检查报告是否存在。有没有办法使用 ReportViewer
组件来做到这一点?或者我需要连接到 SSRS 网络服务吗?
我浏览了 MyReportViewer.ServerReport
的方法和属性,但没有发现任何有用的东西。我还检查了 this related question,但它实际上不在 ReportViewer 控件的上下文中。
我对其他答案持开放态度,但在此之前,这是我目前的解决方法:
try
{
var requestedParameters = MyReportViewer.ServerReport.GetParameters();
var filledParameters = GetFilledParameters(requestedParameters);
MyReportViewer.ServerReport.SetParameters(requestedParameters);
MyReportViewer.ServerReport.Refresh();
}
catch (ReportServerException exception)
{
if (!exception.Message.Contains("rsItemNotFound"))
{
throw;
}
// Else... ReportViewer will show "rsItemNotFound" error.
// Or you can do something fancy in your app here, I suppose :-)
}