Получить CurrentPage ReportViewer в режиме предварительного просмотра?

В обычном режиме (по умолчанию при первой загрузке ReportViewer с локальным отчетом) я могу правильно получить CurrentPage, которая является текущей страницей в текущем режиме просмотра.

Но после перехода в режим предварительного просмотра (может быть сделано с помощью SetDisplayMode(DisplayMode.PrintLayout)), Я не могу получить значение CurrentPage, единственное свойство, к которому я могу получить доступ, чтобы узнать текущую страницу ReportViewer. Мне нужно добиться этого, потому что я хочу настроить свою собственную панель инструментов для средства просмотра отчетов, это почти сделано, за исключением того, что CurrentPage, кажется, фиксируется на 1 после перехода в режим PrintLayout.

Вот мой код для отображения текущей страницы:

private void BindData(){
   myTextBox.DataBindings.Clear();
   myTextBox.DataBindings.Add("Text", myReportViewer, "CurrentPage");
}
//Register some events to re-bind data and get other updated info (such as TotalPages)...
myReportViewer.RenderingComplete += (s,e) => {
     BindData();
};
myReportViewer.PageSettingsChanged += (s,e) => {
     BindData();
};

Это работает нормально, когда в обычном режиме (обработчик PageSettingsChanged добавлен для переключения в режим PrintLayout, но, похоже, он не работает, он помогает обновить TotalPages, чего можно достичь с помощью метода GetTotalPages(), однако привязка не работает больше после переключения в режим PrintLayout).

Ваша помощь будет высоко ценится!

Заранее большое спасибо!

1 ответ

Текущая страница не была установлена ​​на 1

Проблема в том, что RenderingComplete не вызывается, если вы поменяете местами страницу, необходимую для использования PageNavigationevent

myReportViewer.PageNavigation += myPageNavigation

void myPageNavigation(object sender, PageNavigationEventArgs e)
{
    MessageBox.Show("CurrentPage will be" +e.NewPage);
}
Другие вопросы по тегам