1

我有一个包含 ReportViewer 的用户控件(ascx)。我需要获取报告中的总页数(例如RViewer.LocalReport.GetTotalPages())。我读到,这个值在 ReportviewerPreRender事件之后才可用。在此事件之后,在 aspx 页面中(包含此 ascx);Render事件,我得到的值为 0。

我尝试将 Reportviewer 直接添加到另一个 aspx 页面。然后在Render那个 aspx 页面的情况下,我得到了 Total pages 的正确值。

为什么我不采用以前的方法?

4

1 回答 1

1

您如何将用户控件添加到页面?在标记中?还是动态的?

鉴于报表查看器控件位于用户控件中,您如何通过用户控件将值向上传输到页面?

我相信(我可能错了)您的用户控件预渲染将在页面预渲染后触发。因此,如果您在页面的预渲染中通过用户控件到达您的报告查看器,则用户控件预渲染,因此 ReportViewer 预渲染还不会发生。

如果这是正确的,解决问题的一种方法是在用户控件的预渲染中引发一个事件,这将传递事件 args 中的页数。(您可以创建一个自定义事件参数类,或者可能重新使用 ReportViewer 命名空间中的一个。)您的页面将有一个处理此值的处理程序,并在处理程序中而不是在 pre -渲染事件处理程序。

于 2012-10-30T16:02:37.790 回答