0

在正常模式下(默认情况下第一次加载带有本地报告的 ReportViewer),我可以正确获取 CurrentPage,即当前视图模式下的当前页面。

但是在更改为预览模式后(可以使用 来完成SetDisplayMode(DisplayMode.PrintLayout)),我无法获得 CurrentPage 的值,这是我可以访问以了解 ReportViewer 的当前页面的唯一属性。我需要实现这一点,因为我想为reportviewer自定义我自己的工具栏,它几乎已经完成,只是在切换到PrintLayout模式后CurrentPage似乎固定为1。

这是我显示当前页面的代码:

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 模式后不再)。

您的帮助将不胜感激!

非常感谢您!

4

1 回答 1

0

CurrentPage 未固定为 1

这里的问题是,如果您交换需要使用PageNavigationevent的页面,则不会调用 RenderingComplete

myReportViewer.PageNavigation += myPageNavigation

void myPageNavigation(object sender, PageNavigationEventArgs e)
{
    MessageBox.Show("CurrentPage will be" +e.NewPage);
}
于 2014-02-13T08:08:34.797 回答