Получить 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);
}