0

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

テキストボックスの値は更新されていません。

4

3 に答える 3

2

mypage.aspxのrenderイベントで正しいページ数を取得していますか?私が理解しているように、mypage.aspxのrenderイベントは、ascxコントロールのrenderイベントの前に発生するため、pagecount値はまだ古いままです。

于 2012-10-31T05:55:32.210 に答える
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);
}
于 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 に答える