在打印预览模式下获取ReportViewer的CurrentPage?

时间:2013-05-02 11:26:47

标签: c# data-binding report reportviewer localreport

在正常模式下(默认情况下,第一次加载带有本地报表的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模式后再也不能工作了。

非常感谢您的帮助!

非常感谢你!

1 个答案:

答案 0 :(得分:0)

CurrentPage尚未修复为1

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

myReportViewer.PageNavigation += myPageNavigation

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