Печать только одной страницы

Я использую метод 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);
Другие вопросы по тегам