我在哪里可以捕获报表查看器中显示的错误,因为这不是我生成的代码? 特别是,我想找出哪个Object没有设置为实例。
答案 0 :(得分:2)
在.aspx页面中,将事件处理程序OnReportError添加到ReportViewer元素:
<rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt" InteractiveDeviceInfos="(Collection)" style="margin-top: 0px" WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" Width="817px" Height="554px"
OnReportError="ReportErrorEventHandler">
<LocalReport ReportPath="App_Code\Session_subclasses\CustomerPortal\SGTSAssetCatalog.rdlc">
<DataSources>
<rsweb:ReportDataSource DataSourceId="ObjectDataSource1"
Name="DataSet1" />
</DataSources>
</LocalReport>
</rsweb:ReportViewer>
在.aspx.cs页面中添加一个Method来处理事件。该事件包含e.Exception下的异常:
public void ReportErrorEventHandler(Object sender, ReportErrorEventArgs e)
{
throw e.Exception;
}
在遵循InnerExceptions的路径之后,我发现,DataSet中指定的连接字符串存在于我的开发环境中,但不存在于测试环境中......花了足够长的时间才能触及这个简单问题的底部-.-
答案 1 :(得分:0)
以上可能有所帮助。尝试添加事件ReportViewer.ReportError事件。 http://msdn.microsoft.com/enus/library/microsoft.reporting.webforms.reportviewer.reporterror(v=vs.100).aspx