Microsoft Report ViewerをWebFormで使ってみる

 

Communityエディションはオプションらしいので追加でインストールしましょう。

まず、素のWinFormプロジェクト

 

f:id:ueshiman:20160518112604p:plain

 

新しい項目の追加から、Reportingでレポートを追加。

 

f:id:ueshiman:20160518112746p:plain

 

ツールボックスから一覧を落とします。 これがデータの明細です。 なんだか、複数貼れるようですが よくわからないので一つにしておきます。

 f:id:ueshiman:20160518115445p:plain

と、データセットプロパティーウィンドウが出るので設定します。

f:id:ueshiman:20160518115716p:plain

すでにデータソースがあれば、プルダウンから なければ新規作成から

f:id:ueshiman:20160518123707p:plain

 

あとは、レポートデータや、ツールボックスから、一覧の上にパーツを貼ります。 外にも張れますが、いっかてしか表示できません。 テーブルから一覧的に印字する場合は、必ず一覧の上に貼る様にします。 

f:id:ueshiman:20160518123817p:plain

なぜか一覧上にパーツが乗らない場合は、Visual Studioとか、Windowsを再起動してみるといいでしょう。

 

 

プレビューとプレビューからの印刷

 

プレビュー画面を作ります

追加から新規のWebフォームを一つ作って ツールバーから、ReportViewerを追加

f:id:ueshiman:20160518123913p:plain

ツールバーから、ReportのReportViewerと、Ajaxの Script Maneger を追加

 

 

矢印の三角をクリックしてください

f:id:ueshiman:20160518124003p:plain

 

作ったレポートを指定します。

 

f:id:ueshiman:20160518124054p:plain

 

これを実行すると

 

f:id:ueshiman:20160518124111p:plain

 

これでは、固定の出力しかできない。 もちろん、パラメーター付きのクエリのGetDataメソッドを足せばいい。 でも、コードベースでデータを差し替えたいと思う。

 

 

此処までくるとObjectDataSouceというものができているので、これを何とかすればと思うところですが、私はダメでした。

RcordViewerを触ります。右クリックして出たポップアップメニューから、コードへ移動を選んで移動

 f:id:ueshiman:20160518124003p:plain

 

移動しました。

f:id:ueshiman:20160518124228p:plain

 

 

Page_Loadに書いてみます。

ボタンイベントでも大丈夫です。

       protected void Page_Load(object sender, EventArgs e)

       {

           if (!IsPostBack)

           {

               using (EstateManagerTestDataSetTableAdapters.document_folderTableAdapter document_folderTableAdapter_ = new EstateManagerTestDataSetTableAdapters.document_folderTableAdapter())

               {

                  EstateManagerTestDataSet.document_folderDataTable table = document_folderTableAdapter_.GetData();

                   foreach (EstateManagerTestDataSet.document_folderRow row in table)

                   {

                       if (row.document_folder_id % 2 == 0)

                       {

                           row.Delete();

                       }

                   }

                   table.AcceptChanges();

                   ReportViewer1.LocalReport.DataSources.Clear();

                  ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("DataSet1", (System.Data.DataTable)table));

                   ReportViewer1.DataBind();

               }

 

           }

       }

 

IDが奇数の物だけになりましす。