ReportProcessor.RenderReport("PDF", reportToExport, null);
メソッドのどこかにNullReferenceExceptionをスローしているTelerikReportプロジェクトがあります。次のスタックトレースを取得します。
System.NullReferenceException: Object reference not set to an instance of an object.
at Telerik.Reporting.Processing.Table.MeasureColumns(Graphics graphics)
at Telerik.Reporting.Processing.Table.Measure(MeasureDirection dir, Graphics graphics)
at Telerik.Reporting.Processing.ProcessingElement.MeasureElement(MeasureDirection dir, Graphics graphics)
at Telerik.Reporting.Processing.ProcessingElement.Measure(MeasureDirection dir, Graphics graphics)
at Telerik.Reporting.Processing.ReportSectionBase.Measure(MeasureDirection dir, Graphics graphics)
at Telerik.Reporting.Processing.ProcessingElement.MeasureElement(MeasureDirection dir, Graphics graphics)
at Telerik.Reporting.Processing.Group.MeasureElement(MeasureDirection dir, Graphics graphics)
at Telerik.Reporting.Processing.Report.MeasureElement(MeasureDirection dir, Graphics graphics)
at Telerik.Reporting.Processing.ProcessingElement.Measure(MeasureDirection dir, Graphics graphics)
at Telerik.Reporting.Processing.ProcessingElement.MeasureElement(MeasureDirection dir, Graphics graphics)
at Telerik.Reporting.Processing.ProcessingElement.Measure(MeasureDirection dir, Graphics graphics)
at Telerik.Reporting.Processing.ReportSectionBase.Measure(MeasureDirection dir, Graphics graphics)
at Telerik.Reporting.Processing.ProcessingElement.MeasureElement(MeasureDirection dir, Graphics graphics)
at Telerik.Reporting.Processing.Group.MeasureElement(MeasureDirection dir, Graphics graphics)
at Telerik.Reporting.Processing.Report.MeasureElement(MeasureDirection dir, Graphics graphics)
at Telerik.Reporting.Processing.Report.MeasureElement(ProcessingElement elementToMeasure)
at Telerik.Reporting.Processing.ReportProcessor.RenderCore(String format, IList`1 reports, Hashtable deviceInfo, Hashtable renderingContext, CreateStream createStreamCallback)
at Telerik.Reporting.Processing.ReportProcessor.ProcessAndRender(String format, IReportDocument reportDocument, Hashtable deviceInfo, Hashtable renderingContext, CreateStream createStreamCallback)
at Telerik.Reporting.Processing.ReportProcessor.ProcessAndRenderStateless(String format, IReportDocument reportDocument, Hashtable deviceInfo, Hashtable renderingContext, CreateStream createStreamCallback)
at Telerik.Reporting.Processing.ReportProcessor.RenderReport(String format, IReportDocument reportDocument, Hashtable deviceInfo)
at JIIGCAL.CareerCompass.Reports.Views.ReportsDefault.ExportToPDF(IReportDocument reportToExport) in C:\dev\.....\Reports\Viewer.aspx.cs:line 236
Viewer.aspx.csの236行目は、RenderReport()の呼び出しです。このエラーを追跡する方法がわかりません。ランタイムレポートエンジンのログを有効にして、問題のあるフィールド/列/テーブルに関する詳細情報を取得する方法はありますか?
編集:解決策が見つかりました
Telerikから次の応答を受け取りました。
このようなエラーは、サイズがゼロに設定されているテーブルセルにテキストボックスがある場合に発生する可能性があります。サイズをゼロから非常に小さい値に変更すると、問題が解決します。行/列グループをゼロサイズに設定すると、Visible = falseに設定されることに注意してください。これは、サポートされていません。CrossTab / Tableのデータ駆動型の性質により、一部のデータを非表示にする場合は、CrossTabグループを非表示にするのではなくフィルタリングする必要があります。
特定の条件に基づいて、いくつかのテキストボックスをVisible=falseに設定していました。私はこれを変更しました、そしてそれは完全に働きました。
内部ランタイムエンジンをログに記録する方法の結果を得る限り、彼らはこのアドバイスをしました:
.NETアプリケーションが一部のログを出力できるようにする標準的な方法は、トレースリスナーを使用することです。たとえば、TextWriterTraceListenerをアプリケーションの構成ファイルに追加できます。
<configuration> <system.diagnostics> <trace autoflush="false" indentsize="4"> <listeners> <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TextWriterOutput.log" /> <remove name="Default" /> </listeners> </trace> </system.diagnostics> </configuration>
レポートエンジンでも同じアプローチを使用します。Visual Studioの出力ウィンドウで実行するトレースの一部を確認できます。また、参照用に製品のソースコードをダウンロードすることもできます。