Определяет, когда вы достигли конца отчета и останавливает нижний колонтитул группы от взлома страницы. Предполагается, что свойство PageBreak нижнего колонтитула вашей группы уже установлено в PageBreak.AfterBand.
private void Report_DataSourceRowChanged(object sender, DataSourceRowEventArgs e) {
if (e.CurrentRow == this.RowCount - 1)
GroupFooter.PageBreak = PageBreak.None;
}
В качестве альтернативы вы можете установить для заголовка вашей группы и свойства PageBreak нижнего колонтитула значение PageBreak.None. Затем, когда вы печатаете первую группу, установите для нее разрыв страницы перед каждой полосой заголовка группы следующим образом:
private void GroupFooter_BeforePrint(object sender, DataSourceRowEventArgs e) {
if (GroupHeader.PageBreak == PageBreak.None)
GroupHeader.PageBreak = PageBreak.BeforeBand;
}
Вам решать, какой метод выбрать. Лично мне больше нравится второй. Несмотря на то, что я произвольно выбрал метод GroupFooter_BeforePrint для подписки и внесения этого изменения, мне все равно было бы удобнее делать это, чем полагаться на количество строк, чтобы определить, когда вы достигли конца отчета.