渲染后更新文本框的值

时间:2012-10-31 05:47:33

标签: c# asp.net reporting-services

MyPage.aspx:

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

ReportControl.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);
}

文本框的值未更新。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

在拨打base.Render(writer);之前尝试更新值

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

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

答案 2 :(得分:0)

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

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