2013-05-02 56 views
0

在正常模式下(默认情况下第一次加载ReportViewer和本地报告),我可以正确地获取CurrentPage,它是当前视图模式下的当前页面。在打印预览模式下获取ReportViewer的当前页面?

但在更改为预览模式后(可以使用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模式,但它似乎没有工作的工作原理确定,它确实帮助更新可以使用GetTotalPages()方法实现的TotalPages,但是在切换到PrintLayout模式后绑定不再工作)。

您的帮助将不胜感激!

非常感谢您提前!

回答

0

的当前页是没有被固定为1

这里的问题是RenderingComplete没有得到,如果你换页 您需要使用PageNavigationevent

myReportViewer.PageNavigation += myPageNavigation 

void myPageNavigation(object sender, PageNavigationEventArgs e) 
{ 
    MessageBox.Show("CurrentPage will be" +e.NewPage); 
} 
称为