0

WinForms アプリケーションで ReportViewer 14.0 で vs2017 を使用しています。以前のバージョンのVSでこれを問題なく実行したことがありますが、今回はこれを機能させることができないことに非常に驚いています。

これが私がこれまでに行ったことです:

  • アプリケーションのルートにある Reports フォルダーにレポート (RDLC) を作成しました。
  • BuildAction を None に設定し、出力ディレクトリにコピーして新しい場合はコピーします
  • 新しいフォームに、ReportViewer コンポーネント (rpt と呼ばれる) を配置しました。
  • 処理モードをローカルに設定しました
  • フォームの Load イベントで、次のコードを実行します。

string path = AppDomain.CurrentDomain.BaseDirectory + @"Reports\Report.rdlc";
rpt.LocalReport.ReportPath = path;

rpt.LocalReport.SetParameters(new ReportParameter("parTitle", Title));

rpt.LocalReport.DataSources.Add(new ReportDataSource("ds", Data));
rpt.Refresh();

アプリを実行すると、フォームが読み込まれますが、ReportViewer に次のメッセージが表示されます:レポート定義が指定されていません

また、ビルド アクションを EmbeddedResource に設定して、以下を使用してみました。

rpt.LocalReport.ReportEmbeddedResource = "Project.Reports.Report.rdlc";

同じ結果です。私も試しました:

Assembly a = Assembly.GetExecutingAssembly();
Stream report = a.GetManifestResourceStream("Project.Reports.Report.rdlc");
rpt.LocalReport.LoadReportDefinition(report);

変わりはない。私はいつもこれを得ています:

ここに画像の説明を入力

私はこれを数時間見つめてきましたが、私の人生では、何が間違っているのかわかりません。どんな助けでも大歓迎です。

ありがとうございました。

4

1 に答える 1

1

私は今、かなりばかげていると感じていますが、同じ問題に直面している人への参考として、ここに解決策を投稿しています.

変化

rpt.Refresh();

rpt.RefreshReport();

トリックをしました。レポートが正しく読み込まれるようになりました。Refresh は Control から継承され、コントロールを無効にするだけで、レポートの処理とレンダリングを強制しません。RefreshReport はまさにそれを行います。

これが誰かの時間を節約できることを願っています。

于 2017-10-10T13:25:38.167 に答える