在正常模式下(默认情况下,第一次加载带有本地报表的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模式,但它似乎不起作用,它确实有助于更新可以使用GetTotalPages()方法实现的TotalPages,但是绑定没有切换到PrintLayout模式后再也不能工作了。
非常感谢您的帮助!
非常感谢你!
答案 0 :(得分:0)
CurrentPage尚未修复为1
这里的问题是如果您交换页面,则不会调用RenderingComplete 你需要使用PageNavigationevent
myReportViewer.PageNavigation += myPageNavigation
void myPageNavigation(object sender, PageNavigationEventArgs e)
{
MessageBox.Show("CurrentPage will be" +e.NewPage);
}