Ответ 1
возвращает datatable, поскольку datasource работает намного быстрее, чем список объектов
Я хочу отображать большие неграфические отчеты (тысячи страниц) на уровне кода, опустив элемент управления ReportViewer
, который просто затмевает браузер, из файлов .rdlc. Когда я тестирую, чтобы сделать отчет на 2000 страниц, метод Microsoft.Reporting.WebForms.LocalReport.Render
занимает примерно полчаса, что считается плохим пользовательским интерфейсом.
Есть ли какие-либо трюки или альтернативные решения для повышения производительности рендеринга: в коде, перепроектировании файла .rdlc или где-то еще, например, только увеличение аппаратного обеспечения?
Пример кода:
LocalReport localReport = new LocalReport();
localReport.ReportPath = Server.MapPath("~/report.rdlc");
SetDataSources(ref localReport);
string reportType = "PDF";
string mimeType;
string encoding;
string fileNameExtension;
string deviceInfo =
"<DeviceInfo>" +
" <OutputFormat>PDF</OutputFormat>" +
" <PageWidth>8.5in</PageWidth>" +
" <PageHeight>11in</PageHeight>" +
" <MarginTop>0in</MarginTop>" +
" <MarginLeft>0in</MarginLeft>" +
" <MarginRight>0in</MarginRight>" +
" <MarginBottom>0in</MarginBottom>" +
"</DeviceInfo>";
}
Warning[] warnings;
string[] streams;
byte[] renderedBytes;
//Render the report
renderedBytes = localReport.Render(
reportType,
deviceInfo,
out mimeType,
out encoding,
out fileNameExtension,
out streams,
out warnings);
Любая помощь очень ценится, спасибо заранее!
возвращает datatable, поскольку datasource работает намного быстрее, чем список объектов
Для создания больших файлов PDF требуется память, но есть необходимость оптимизировать использование памяти, если вам нужно:
Этот метод также полезен, поскольку вы контролируете ход генерации отчета.