1

ユーザーコントロールを使用していて、レポートビューアとカスタムツールバーを追加しました。カスタムナビゲーションも作成したいのですが、どういうわけか全ページをチェックしてナビゲーションボタンを表示するかどうかを確認したい場合、0または「この式は副作用を引き起こし、評価されません」を返します。エラー..

アイデアが足りなくなって、ここからどこへ行けばいいのかよくわかりません。

<rsweb:reportviewer 
ID="rvReports" 
runat="server" ShowToolBar="False"
SizeToReportContent="True" AsyncRendering="false" />

コードビハインド:

rds = new Microsoft.Reporting.WebForms.ReportDataSource("dsName", myclasstoload());     
rvReports.LocalReport.DataSources.Add(rds);
rvReports.PageCountMode = PageCountMode.Actual;
rvReports.LocalReport.Refresh();
rvReports.DataBind();


if (rvReports.LocalReport.GetTotalPages() > 1)
{
 liFirst.Visible = true;
 liPrevious.Visible = true;
 liNext.Visible = true;
 liLast.Visible = true;
}

これはすべて、私のusercontrol(.ascx)のdatabindイベントにあります。どんな助けでも大歓迎です。

4

2 に答える 2

1

このmsdnの質問はおそらくあなたの答えGetTotalPages()です。レポートがレンダリングされるまで、メソッドを呼び出すことはできません。関連する見積もり:

レポートサーバーは、レポートの最初のページをレンダリングするまで、合計ページ数を計算しません。ReportViewerは、ASP.NetイベントPreRenderまで、サーバーからのページレンダリングを要求しません。GetTotalPages呼び出しをReportViewer.PreRenderイベントが発生した後のポイントに移動すると、目的の動作が得られるはずです。

参考のために、ASP.NETページのライフサイクルも参照してください。

于 2012-07-12T08:01:31.437 に答える
0

私の場合、ページを取得するには、レポートをpdfでレンダリングしてから、Itextsharpライブラリのpdfreaderクラスを使用して合計ページを取得する必要がありました。

var bytes=viewer.Render("PDF");
PdfReader reader = new PdfReader(bytes);
var pageCount = reader.NumberOfPages

これは、rdlcをPDF形式でレンダリングする場合にうまく機能します

于 2018-02-16T19:57:28.923 に答える