i’m having a user control(ascx) that contains ReportViewer.
I need to get total number of pages in the report (Ex. RViewer.LocalReport.GetTotalPages()).
I read that, the this value is available onle after PreRender event of Reportviewer.
After this event, in aspx page (that contains this ascx); Render event, I’m getting the value as 0.
I tried adding Reportviewer directly to another aspx page. Then in Render event of that aspx page, i got the right value for Total pages.
Why I’m not getting with prior approach?
How are you adding the user control to the page? In markup? Or dynamically?
Given that the Report Viewer control is in the user control, how are you transmitting the value up through the user control to the page?
I believe (I could be wrong) that your user control pre-render will fire AFTER the page’s pre-render. So, if you’re reaching through the user control to your reportviewer in the page’s pre-render, the user control pre-render and thus the ReportViewer pre-render won’t have happened yet.
If this is correct, one way to approach the problem would be to raise an event in your user control’s pre-render, which would pass up the page count in the event args. (You can create a custom event argument class, or possibly re-use one from the ReportViewer’s namespace.) Your page will have a handler for this value, and do whatever it needs to do with the value in the handler rather than in the pre-render event handler.