У меня есть служебный метод (см. Ниже), который всегда хорошо мне служил. После привязки элемента управления отчетом я передаю ему элемент управления, и он отображает отчет в формате PDF.
Недавно я обновился до .NET 4.0 и нового средства просмотра отчетов 2010 (10.0.0.0). Теперь он выдает ошибку (ниже), если набор записей (набор данных), который я передаю программе просмотра отчетов, не содержит данных.
Любые идеи? Спасибо!
ОШИБКА (верхняя 5):
[InvalidOperationException: (обработка): ScalableList: индекс 0 вне допустимого диапазона [0 :: - 1]] Microsoft.ReportingServices.Diagnostics.Utilities.DefaultRSTraceInternal.Assert (логическое условие, String componentName, String сообщение) +176 Microsoft.ReportingServices. OnDemandProcessing.Scalability.ScalableList1.get_Item(Int32 index) +212 Microsoft.ReportingServices.Rendering.HPBProcessing.PageStructStaticMemberCell.AddToPageCHContent(List
1 rowHeights, ScalableList`1 columnInfo, Int32 rowIndex, Int32 colIndex, Boolean isLTR, RPLWriter rplWriter, PageContext pageContext, Double pageLeft, Double pageTop, Double page &Right, DoubleatLabottleStep, RepeatLabs + .Rendering.HPBProcessing.Tablix.AddToPage (RPLWriter rplWriter, PageContext pageContext, Double pageLeft, Double pageTop, Double pageRight, Double pageBottom, RepeatState repeatState) +781
УТИЛИТНЫЙ МЕТОД:
private static void renderReportAsPDF (ReportViewer reportViewer, ответ HttpResponse) {
Warning[] warnings;
string[] streamids;
string mimeType;
string encoding;
string extension;
string reportName = reportViewer.LocalReport.DisplayName;
byte[] bytes = reportViewer.LocalReport.Render("PDF", null, out mimeType, out encoding,out extension, out streamids, out warnings);
response.Clear();
response.ContentType = mimeType;
response.ContentEncoding = System.Text.Encoding.UTF32;
response.BinaryWrite(bytes);
response.End();
}