Печать только одной страницы
Я использую метод LocalReport.Render для печати отчета из приложения Windows Form, как описано здесь: http://msdn.microsoft.com/en-us/library/ms252172.aspx
Это работает, но печатает только первую страницу. Я не использую какой-либо верхний или нижний колонтитул на странице отчета, только тело. Нет дочерних отношений, нет подчиненных. Просто очень простой список объектов данных.
Я делаю что-то вроде этого, чтобы загрузить источник данных в отчет:
List<mysimpledataobject> MyData = new List<mysimpledataobject>();
... add 10 items to the list ...
report.DataSources.Add(new ReportDataSource("Sales", MyData));
Отображается только первая страница. Я подумал, что, возможно, все страницы отображаются в списке потоков, и, возможно, на принтер отправляется только первая страница, но когда я отлаживаю и просматриваю список потоков, все, что я вижу, это один элемент. Поток должен иметь один элемент в списке потоков для каждой страницы.
Часть кода рендеринга выглядит так:
report.Render("Image", deviceInfo, CreateStream, out warnings);
foreach (Stream stream in m_streams)
stream.Position = 0;
Список m_streams содержит только 1 элемент, поэтому печатается только 1 страница.
Я также попытался передать DataTable и массив бизнес-объектов в качестве источника данных, но это тоже не работает.
Любые идеи были бы хорошы. Благодарю.
1 ответ
Если вы хотите отобразить все страницы вашего отчета, вам нужно установить 0 на StartPage
установка в DeviceInfo
,
Значение по умолчанию StartPage
а также EndPage
это 1. Вот почему вы всегда отображаете только первую страницу.
Пример:
string mime, encoding, fileNameExtension;
string[] streams;
Warning[] warnings;
byte[] bytes = report.Render("IMAGE", @"<DeviceInfo><OutputFormat>TIFF</OutputFormat><StartPage>0</StartPage></DeviceInfo>", out mime, out encoding, out fileNameExtension, out streams, out warnings);