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);
}
文本框的值未更新。
答案 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设置。那你应该好吗?