0

我的页面.aspx:

<asp:TextBox ID="txtPageCount" runat="server" EnableViewState="true" ></asp:TextBox>
<rc:ReportControl id="ReportControl1" runat="server" />

报告控制.ascx:

<div>
            <rsweb:ReportViewer ID="ReportViewer1" runat="server" CssClass="ReportViewer" AsyncRendering="false"
                OnPreRender="RptViewer_PreRender" EnableViewState="true" Width="100%" PageCountMode="Actual"
                WaitMessageFont-Size="1.2em" ShowToolBar="true" Visible="true"
                InteractiveDeviceInfos="(Collection)">  
                <LocalReport></LocalReport>           
            </rsweb:ReportViewer>

</div>

在报告处理(RptViewer_PreRender)之后,Render如果发生MyPage.aspx,我正在更新 的值txtPageCount

protected override void Render(HtmlTextWriter writer)
{
    base.Render(writer);
    TextBox pageCount = new TextBox();
    pageCount = (TextBox)RtDialysisSummary.FindControl("txtPageCount");

    pageCount.Text = Convert.ToString(ReportViewer1.TotalPages);
}

文本框的值没有更新。

4

3 回答 3

2

您确定您在 mypage.aspx 的呈现事件中获得了正确的页数吗?因为据我了解,mypage.aspx 的渲染事件将在您的 ascx 控件的渲染事件之前发生,因此 pagecount 值仍然会更旧。

于 2012-10-31T05:55:32.210 回答
1

Try updating the value before you call base.Render(writer); like below

protected override void Render(HtmlTextWriter writer)
{
    TextBox pageCount = new TextBox();
    pageCount = (TextBox)RtDialysisSummary.FindControl("txtPageCount");

    pageCount.Text = Convert.ToString(ReportViewer1.TotalPages);
    base.Render(writer);
}
于 2012-10-31T05:51:08.547 回答
0

可以移动 base.Render(writer); 到最后一行。如果它在渲染后你唯一要做的就是删除一些 javascript 来更新它。还有为什么?我认为问题是页数不正确,但您设置了 PageCountMode.Actual。那你应该好吗?

http://msdn.microsoft.com/en-us/library/microsoft.reporting.webforms.reportviewer.pagecountmode%28v=vs.100%29.aspx

于 2012-10-31T05:58:10.707 回答