Если вам нужно распечатать отдельные страницы отчета в нескольких экземплярах, то придется прибегнуть к кодированию. Вы можете настроить свойства печати из кода пользовательского приложения, а также вручную в диалоговом окне печати. А это позволяет выбрать конкретные страницы отчета и задать количество копий. Однако, есть нюанс - вы можете задать количество копий только для всех печатаемых страниц. Поэтому, чтобы достичь поставленной цели, нам придется разбить процедуру печати на этапы.
Допустим вам нужно напечатать вторую страницу отчета 3 раза, а все остальные - 1. Значит мы разобьем печать на два этапа: печать второй страницы и печать остальных страниц.
//Создали отчет var report = new Report(); //Создали источник данных DataSet data = new DataSet(); //Загрузили данные из файла data.ReadXml("~/nwind.xml"); //Зарегистрировали источник данных в отчете report.RegisterData(data, "NorthWind"); //Загрузили шаблон отчета report.Load("~/Master-Detail.frx"); //Подготовили отчет report.Prepare(); //Выбираем вторую страницу отчета report.PrintSettings.PageNumbers = "2"; //Настраиваем количество копий report.PrintSettings.Copies = 3; //Скрываем диалоговое окно печати report.PrintSettings.ShowDialog = false; //Отправляем отчет на печать report.Print(); //Повторяем то же самое для остальных страниц отчета report.PrintSettings.PageNumbers = "1, 3, 4, 5"; report.PrintSettings.Copies = 1; report.Print();
Таким образом, мы можем печатать нужные страницы отчета отдельно от всех остальных. Единственное неудобство приведенного выше кода - распечатанные страницы будут не по порядку. Если нужно все же по порядку, то придется разделять процедуру печати отчета на 3 этапа: печать первой страницы, печать второй страницы, печать остальных страниц отчета.