1

ReportViewerを含むユーザーコントロール(ascx)があります。レポートの総ページ数を取得する必要があります(例RViewer.LocalReport.GetTotalPages())。私はそれを読みました、この値はReportviewerPreRenderのイベントの後にのみ利用可能です。このイベントの後、aspxページ(このascxを含む)で。Renderイベント、値を0として取得しています。

Reportviewerを別のaspxページに直接追加してみました。次に、Renderそのaspxページの場合、合計ページの正しい値を取得しました。

なぜ私は以前のアプローチで得られないのですか?

4

1 に答える 1

1

ページにユーザーコントロールをどのように追加していますか?マークアップで?または動的に?

レポートビューアコントロールがユーザーコントロールにあるとすると、ユーザーコントロールを介してページに値をどのように送信しますか?

私は(私は間違っているかもしれませんが)あなたのユーザーコントロールの事前レンダリングはページの事前レンダリングの後に起動すると信じています。したがって、ページの事前レンダリングでユーザーコントロールを介してレポートビューアーに到達している場合、ユーザーコントロールの事前レンダリング、つまりReportViewerの事前レンダリングはまだ実行されていません。

これが正しければ、問題に取り組む1つの方法は、ユーザーコントロールの事前レンダリングでイベントを発生させることです。これにより、イベント引数でページ数が渡されます。(カスタムイベント引数クラスを作成するか、ReportViewerの名前空間からクラスを再利用できます。)ページにはこの値のハンドラーがあり、preではなくハンドラーの値で必要なことをすべて実行します。 -イベントハンドラーをレンダリングします。

于 2012-10-30T16:02:37.790 に答える